- 1、本文档共117页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组合模式 模式分析 典型的抽象构件角色代码: 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(); } 组合模式 模式分析 典型的叶子构件角色代码: public class Leaf extends Component { public void add(Component c) { //异常处理或错误提示 } public void remove(Component c) { //异常处理或错误提示 } public Component getChild(int i) { //异常处理或错误提示 } public void operation() { //实现代码 } } 模式分析 典型的容器构件角色代码: public class Composite extends Component { private ArrayList list = new ArrayList(); public void add(Component c) { list.add(c); } public void remove(Component c) { list.remove(c); } public Component getChild(int i) { (Component)list.get(i); } public void operation() { for(Object obj:list) { ((Component)obj).operation(); } } } 组合模式 模式分析 组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。 同时容器对象与抽象构件类之间还建立一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。 组合模式 模式分析 文件系统组合模式结构图: * * 设计模式-结构型模式 C#示例与案例 1、C#模板代码 2、水果盘与文件浏览 3、图像的产生 4、分公司 组合模式 组合模式实例与解析 实例一:水果盘 在水果盘(Plate)中有一些水果,如苹果(Apple)、香蕉(Banana)、梨子(Pear),当然大水果盘中还可以有小水果盘,现需要对盘中的水果进行遍历(吃),当然如果对一个水果盘执行“吃”方法,实际上就是吃其中的水果。使用组合模式模拟该场景。 组合模式 组合模式实例与解析 实例一:水果盘 组合模式 组合模式实例与解析 实例二:文件浏览 文件有不同类型,不同类型的文件其浏览方式有所区别,如文本文件和图片文件的浏览方式就不相同。对文件夹的浏览实际上就是对其中所包含文件的浏览,而客户端可以一致地对文件和文件夹进行操作,无须关心它们的区别。使用组合模式来模拟文件的浏览操作。 组合模式 * * 设计模式-结构型模式 和尚的故事 * * 设计模式-结构型模式 和尚的故事 组合模式 组合模式的优点 可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,使得增加新构件也更容易。 客户端调用简单,客户端可以一致的使用组合结构或其中单个对象。 定义了包含叶子对象和容器对象的类层次结构,叶子对象可以被组合成更复杂的容器对象,而这个容器对象又可以被组合,这样不断递归下去,可以形成复杂的树形结构。 更容易在组合体内加入对象构件,客户端不必因为加入了新的对象构件而更改原有代码。 组合模式 组合模式的缺点 使设计变得更加抽象,对象的业务规则如果很复杂,则实现组合模式具有很大挑战性,而且不是所有的方法都与叶子对象子类都有关联。 增加新构件时可能会产生一些问题,很难对容器中的构件类型进行限制。 组合模式 模式适用环境 在以下情况下可以使用组合模式: 需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。 让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节。 对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。 组合模式 模式应用 (1) XML文档解析 ?xml version=1.0? books book
您可能关注的文档
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(1).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(2).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(3).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(4).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(5).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第4章 波形发生器电路(6).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第5章 变换电路(1).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第5章 变换电路(2).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第5章 变换电路(3).ppt
- 南华大学电气工程学院电子电路设计与仿真课件第5章 变换电路(4).ppt
文档评论(0)