设计模式笔记--结构型模式之三--组合模式 Composite
来源:互联网 发布:简易平面广告制作软件 编辑:程序博客网 时间:2024/05/18 21:07
意图:
将对象组合成树形结构以表示部分-整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性
适用性:
1表示对象的部分-整体层次结构
2希望用户忽略组合对象与单个对象的不同
效果:
1包含了基本对象和组合对象的类层次结构
2简化客户代码
3使得更容易增加新类型的组件
4 设计更加一般化
实现:
1显式的父部件引用
2共享组件
3最大化Component接口
4声明管理子部件的操作
示例代码如下:
Composite.h
- #include <iostream>
- using namespace std;
- class Composite;
- class Component
- {
- public:
- virtual Composite* GetComposite(){return 0;}
- };
- class Composite:public Component
- {
- public:
- void Add(Component*){cout<<"A Component should be added"<<endl;}
- virtual Composite* GetComposite(){return this;}
- };
- class Leaf:public Component
- {
- public:
- void Add(Component*){cout<<"A leaf should be added"<<endl;}
- };
main.cpp
- #include <iostream>
- #include "Composite.h"
- int main()
- {
- Composite* aComposite = new Composite;
- Leaf* aLeaf = new Leaf;
- Component* aComponent;
- aComponent = aComposite;
- Composite* test;
- if (test = aComponent->GetComposite())
- {
- test->Add(new Leaf);
- }
- aComponent = aLeaf;
- if (test = aComponent->GetComposite())
- {
- test->Add(new Leaf);
- }
- }
- #include <iostream>
- using namespace std;
- class Composite;
- class Component
- {
- public:
- virtual Composite* GetComposite(){return 0;}
- };
- class Composite:public Component
- {
- public:
- void Add(Component*){cout<<"A Component should be added"<<endl;}
- virtual Composite* GetComposite(){return this;}
- };
- class Leaf:public Component
- {
- public:
- void Add(Component*){cout<<"A leaf should be added"<<endl;}
- };
main.cpp
- #include <iostream>
- #include "Composite.h"
- int main()
- {
- Composite* aComposite = new Composite;
- Leaf* aLeaf = new Leaf;
- Component* aComponent;
- aComponent = aComposite;
- Composite* test;
- if (test = aComponent->GetComposite())
- {
- test->Add(new Leaf);
- }
- aComponent = aLeaf;
- if (test = aComponent->GetComposite())
- {
- test->Add(new Leaf);
- }
- }
- 设计模式笔记--结构型模式之三--组合模式 Composite
- 结构型设计模式---组合模式(Composite)
- 设计模式(结构型)之组合模式(Composite Pattern)
- 【设计模式】结构型模式之组合Composite
- 结构型设计模式之组合模式(Composite Pattern)
- [设计模式-结构型]组合(Composite )
- 设计模式-结构型-composite 组合
- (C++设计模式) ------Composite 组合模式-- 结构型模式
- 设计模式-结构型模式:组合模式 Composite
- 结构模式之Composite(组合)
- 结构模式之Composite(组合)
- 设计模式中结构型模式(三)组合模式(Composite)
- 结构型模式之组合COMPOSITE
- [设计模式笔记]二. 结构型模式--9.Composite模式(组合)(一)
- 【设计模式学习笔记九】【结构型模式】【组合模式(Composite)】
- 设计模式之Composite(组合)
- 设计模式之Composite(组合)
- 设计模式之Composite(组合)
- 今天TD卡激活了,让我想起当年的笑话"“喂喂操”!
- 企业数据模型3.0 _报告
- 设计模式笔记--结构型模式之二--桥接 Bridge
- 在线实时生成excel文件下载
- 解决XP下鼠标单击变双击的问题
- 设计模式笔记--结构型模式之三--组合模式 Composite
- PE格式详解(三)
- PE格式详解(四)
- PE格式详解(五)
- PE格式详解(六)
- 第一天
- PE格式详解(七)
- PE格式详解(八)
- Google和百度收录网站页面的比较