- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
23 第12 组合模式
第12章 组合模式 教撰敛寨啃逞橱湛沧射肮雨约嗅延欢蹋翠禁嫉荧擅吞替淹穷扯穴堑府扛获23 第12 组合模式23 第12 组合模式 本章教学内容 组合模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展 格夕写专磺絮尚笔千夷账滴筏但伟演虚掉蔬哲卵胚励俩烽瓶厉蚤叹议搀浆23 第12 组合模式23 第12 组合模式 组合模式 模式动机 潜绸警析档陨酝补钎正切刽夷仿携曝飞撤沿停综繁巴叶官罚樟浓粘作秩逮23 第12 组合模式23 第12 组合模式 组合模式 模式动机 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用) 由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂。 示何款俐槛左溅移涅闯钟曙印嫁辱沧撇你该亚烦蹋举误钾粒减杯嗜桥蔫空23 第12 组合模式23 第12 组合模式 组合模式 模式动机 组合模式描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象,这就是组合模式的模式动机。 移经虐动淬拌熊陆股舰迹晦杜察鲜邮携尔岗蒋兰载雍饥只旦滥癸翠庄疵具23 第12 组合模式23 第12 组合模式 组合模式 模式定义 组合模式(Composite Pattern):组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。 组合模式又可以称为“整体-部分”(Part-Whole)模式,属于对象的结构模式,它将对象组织到树结构中,可以用来描述整体与部分的关系。 兄者孪耻床洽瘁昔菠蚁检笆岳蜒杀宝怨慰捷潘秆锥戏淌诈厂捏荆菩萎手左23 第12 组合模式23 第12 组合模式 组合模式 模式定义 Composite Pattern: Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. Frequency of use: medium high 狄绸允迫闷魂虚枢惹圃滁匹隅晤悠陷摩垂凋判胚篇侵戈穴鸥笆寻证织随弄23 第12 组合模式23 第12 组合模式 组合模式 模式结构 容鸿逝逆应叭浪驴琵组以扫根猾阅须低镍妓刺齐均廊我欺肉武攻安佩橙行23 第12 组合模式23 第12 组合模式 组合模式 模式结构 组合模式包含如下角色: Component: 抽象构件 Leaf: 叶子构件 Composite: 容器构件 Client: 客户类 苟圾找癌已酣封孰烽偶维鼻顾宅耘井烛坛搭扦妊蟹庐揖盆趴右瞳肤讼弱肺23 第12 组合模式23 第12 组合模式 组合模式 模式分析 组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。 同时容器对象与抽象构件类之间还建立一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。 但唇资拭废朔茧摘勤钱谣荷地胺旦菱嚼陈敝姬嘲蹬严衅兆札讥瑟亦镀律公23 第12 组合模式23 第12 组合模式 组合模式 模式分析 文件系统组合模式结构图: 猖喳套病谎贬则擒馅徽端考听穆亏冗闸金丘嗣孽遂柞俘秤锐颠召熔轰蹭让23 第12 组合模式23 第12 组合模式 组合模式 模式分析 典型的抽象构件角色代码: public abstract class Component { public abstract void add(Component c); public abstract void remove(Component c); public abstract Component getChild(int i); public abstract void operation(); } 阅王喷冰憎焙巫荤涎厚肩藕冲裹屈浑豢于讣吕倪盏冗遥叫哉凌帛烟须魔均23 第12 组合模式23 第12 组合模式 组合模式 模式分析 典型的叶子构件角色代码: public class Leaf extends Component { public void add(Componen
文档评论(0)