设计模式之Composite
2024-09-15 04:55:06
设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则)
Composite定义?
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构。
想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。
Composite好处?
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。
Composite应用?
1.文件目录与实际目录的展示
Composite模式结构?
附上Composite的代码:
public class Composite extends Component{ private ArrayList list = new ArrayList();
public void add(Component component){ list.add(componet); }
public void remove(Componet componet){list.remove(component);}
public Component getChild(int index){ (Component)list.get(index);}
public void operation(){
for(Object o : list){
((Component)o).operation();
} }
这个部分比较好理解。可以与文件系统来举例说明。
一个文件dir里可以有dir也可以有file。dir种可以add/remove dir/file但是file中不能add dir/file。你可以分析出dir中会有一个存放dir/file的list。
最新文章
- 全面剖析 <;input>; 标签 ------ HTML\HTML5
- CSMA-CA介绍
- classpath and path.
- JS笔记2 --定义对象
- BeanstalkClient学习
- 关于MyEclipse启动时的插件启动(Maven4MyEclipse)
- 总结 React 组件的三种写法 及最佳实践 [涨经验]
- AMQP协议学习
- IBM Rational AppScan:跨站点脚本攻击深入解析
- 图像检索:CEDD(Color and Edge Directivity Descriptor)算法
- 异步处理,Event Souring,事务补偿,实现最终一致性和服务的弹性和批处理
- 查看多核CPU各核的状态
- mongodb三种存储引擎高并发更新性能专题测试
- 动态加载jar包(一)
- Spring如何解析XML文件——Spring源码之XML初解析
- 【代码笔记】iOS-自动成表格的效果
- 〖Linux〗Ubuntu 64位安装sqlite3_analyzer
- 飞飞影视cms标签
- localhost连接慢如何解决?
- iSCSI 在Linux下的模拟实验