- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
zhjrGoF结构型模式组合模式.ppt
《设计模式》 GoF-结构型模式 4.1 Adapter Pattern(适配器模式) 4.2 Bridge Pattern(桥接模式) 4.3 Composite Pattern(组合模式) 4.4 Decorator Pattern(装饰模式) 4.5 Facade Pattern(外观模式) 4.6 Flyweight Pattern(轻量级模式) 4.7 Proxy Pattern(代理模式) GoF-结构型模式 如果以绘图为例的话,一个文字是一个绘图元件,一个线段是一个绘图元件,而一个长方形也是一个绘图元件,这些绘图元件可以组成一个图片,如果将这个图片也视作一个绘图元件,则这么递回绘图下去,就可以组合成一个较大的、复杂的图形元件,这样的目的可以使用Composite模式来解决。 对于使用者而言,无论是文字、线段或长方形,甚至是组合后的图片元件,它们都拥有一个共同的行为,使用者基本上并不会感觉出它们之间的操作有任何的不同,您可以拖曳、放大、缩小等等,这些行为都是一致的。 对于Text、Line与Rectangle而言,Picture是一个容器,然而Picture继承Graphic类,所以它也是一个绘图元件,您可以进一步的将Picture组合至另一个Picture中,以形成较大的、复杂的图形。 组合模式的UML结构图如下所示: Component 为组合中的对象声明接口。 在适当的情况下,实现所有类共有接口的缺省行为。 声明一个接口用于访问和管理Component 的子组件。 在递归结构中定义一个接口,用于访问一个父组件,并在合适的情况下实现。 Leaf 在组合中表示叶节点对象,叶节点对象没有子节点。 在组合中定义图元对象的行为。 Composite 定义有子部件的那些部件的行为 存储子部件 在Component接口中实现与子部件有关的操作。 Client 通过Component接口操纵组合部件的对象 依此架构,您可以递归地组合图形元件,例如: 除了绘图元件之外,一些具有层次性或组合性的物件也可以使用Composite模式,像是电路元件、设备元件等等,使用Composite模式可以大大减低这些元件设计的复杂度。 最典型的当属文件夹了! Composite模式概念起来比简单,简单一点说,可以使用Composite模式来构造一个具有统一接口界面的树形的对象群,并可通过该接口访问对象群的每个对象。 我们应用Composite模式来实现文件系统的文件/目录结构:IFile:File与Folder的共通接口界面。相当于Component。Folder:目录。目录下面有子目录,文件。相当于Composite。File:文件。存在于目录之中。相当于Leaf。Client类:测试类或者说使用类。 interface?IFile?{ ?? ????public?void?printName(); ?? ?? ????public?boolean?addChild(IFile?file); ????public?boolean?removeChild(IFile?file); ? ????public?ListIFile?getChildren(); ?? } ?? 泛型 ?? class File implements IFile { private String name; public File(String name) { = name; } public void printName() { System.out.println(name); } public boolean addChild(IFile file) { return false; } public boolean removeChild(IFile file) { return false; } public ListIFile getChildren() { return null; } } ?? ?? class?Folder?implements?IFile?{ ?? ????private?String?name; ?? ????private?List?IFile?childList; ?? ? ????public?Folder(String?name)?{ ?? ?????????=?name; ?? ????????this.childList?=?new?ArrayListIFile(); ?} ?? ???public?vo
您可能关注的文档
- XXX品牌战略报告.ppt
- xxx城市综合智能管理系统.doc
- XXX基本公共卫生服务项目方案.doc
- XXX学校维修改造标段.doc
- xxx应急预案(范本).doc
- XXX应急预案.doc
- XXX房地产有限责任公司视频会议系统解决方案.doc
- xxx换流站工程应急管理体系预案策划.doc
- XXX有限公司职业卫生管理制度汇编.doc
- xxx楼盘奔跑吧慧姐方案.ppt
- 必修二课后作业第一章 立体几何初步124第2课时.doc
- Unit4第2课时SectionA(GrammarFocus-3c)(课时练习).docx
- 浙教版七上第二章《观察生物》第3~4节测试卷.docx
- 八上历史第7单元解放战争03单元测(原卷版).docx
- 专题10字母表示数(1个知识点4种题型2种中考考法)(原卷版).docx
- 第18课有关相对分子质量的计算(化学式计算)(原卷版)1.docx
- 142变阻器(分层练习)(原卷版)-2023-2024学年九年级物理上册(苏科版).docx
- 5.1种群与群落讲义.docx
- 专题11短文语法填空与选词填空强化练30篇(期末真题精选)九年级英语(牛津译林版)(原卷版).docx
- 黄金卷06-2023年中考化学全真模拟卷(深圳专用)(考试版).docx
文档评论(0)