第9章组合模式论述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组合模式优点 定义了包含叶子对象和容器对象的类层次结构,叶子对象可以被组合成更复杂的容器对象,而这个容器对象又可以被组合,这样不断递归下去,可以形成复杂的树形结构。 更容易在组合体内加入对象构件,客户端不必因为加入了新的对象构件而更改原有代码。 使设计变得更加抽象,对象的业务规则如果很复杂,则实现组合模式具有很大挑战性,而且不是所有的方法都与叶子对象子类都有关联。 增加新构件时可能会产生一些问题,很难对容器中的构件类型进行限制。 组合模式缺点 需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。 让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节。 对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。 何时使用组合模式 用迭代器与组合模式对二叉树进行遍历 或写研究报告: 合成模式在XML Schema设计中的应用 练习题 练习题 演示了通过一些基本图像元素(直线、园等)以及一些复合图像元素(由基本图像元素组合而成)构建复杂的图形树的过程 故事的角色有两种:一种里面没有其它角色;另一种内部有其它角色。 * * 一个树结构由两种节点组成:树枝节点和树叶节 点。树枝节点可以有子节点,而一个树叶节点不 可以有子节点。除了根节点外,其它节点有且只 有一个父节点。 注意:一个树枝节点可以不带任何叶子,但是它 因为有带叶子的能力,因此仍然是树枝节点,而 不会成为叶节点。一个树叶节点永远不可能带有 子节点。 * 用来解决上述问题的一个合理的解决方案就是组合模式。那么什么是组合模式呢? 组合模式又可以称为“整体-部分”模式,属于对象的结构模式,它将对象组织到树结构中,可以用来描述整体与部分的关系 组合模式又叫部分-整体模式(Part-Whole) 组合模式将对象组织到树结构中,可以用来描述 整体与部分的关系。 组合模式使得客户端把一个个单独的成分对象和 由他们复合而成的合成对象同等看待。 * 组合Composite模式有两个主要效果: 1)通过抽象用户和组件之间的联系,将组件表示成树形递归结构,使用户可以一致的使用各种类型的组件,包括原子组件和组合组件,从而避免在用户代码中插入很多的类型判断和分支语句; 2)通过这种组建类型抽象,使得增加新类型的组件(包括原子组件和组合组件)非常方便,无需对用户造成影响。 * 抽象构件角色(Component):这是个抽象类,一般就是个接口,它定义出公共接口,安全模式里,构件角色并不定义管理子对象的方法 树叶构件角色(Leaf):树叶对象没有下级,只定义原始对象。 树枝构件角色(Composite):代表参加组合的下级子对象的对象,还定义出了管理方法:add,remove * 抽象构件角色(Component):这是个抽象类,一般就是个接口,它定义出公共接口,安全模式里,构件角色并不定义管理子对象的方法 树叶构件角色(Leaf):树叶对象没有下级,只定义原始对象。 树枝构件角色(Composite):代表参加组合的下级子对象的对象,还定义出了管理方法:add,remove * 在客户端看来,树叶类对象与合成类对象的区别起码在接口层次上消失了 * AWT提供了大量的组件和容器,包括窗体、菜单和各种输入组件。 AWT类全部在 java.awt 包中,Java图形用户界面的最基本组成部分是组件(Component) 组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一 个按钮、一个标签等。 组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。 类java.awt.Component是许多组件类的父 类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等。 容器java.awt.Container是Component的子类,因此容器本身也是一个组件,它具有组 件的所有性质,但是它的主要功能是容纳其他组件和容器。一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布 置界面。所有的容器都可以通过add()方法向容器中添加组件。 这里的容器类就是组件类的组合,所有的子容器类型都可以拥有多个Component的子类型对象 javax.swing.JComponent#add(Component) ??java.awt.Container#add(Component) ??java.u

文档评论(0)

2226657222 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档