组合模式(Composite)
2013-11-15 08:42
232 查看
意图将对象组合成树形结构以表示"部分-整体"的层次结构。使得用户对单个对象和组合对象的使用更具有一致性。
类图
参与者Component
为组合中的对象声明接口
在适当的情况下,实现所有类共有接口的缺省行为。
声明一个接口用于访问和管理Component的子组件
(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适情况下实现它。
Leaf
在组合中表示叶节点对象,叶节点没有子节点。
在组合中定义对象的行为。
Composite
定义有子部件的的那些部件的行为
存储子部件
在Component接口中实现与子部件有关的操作。
Client
通过Component接口操纵组合部件的对象
代码:还有错。。。
来自为知笔记(Wiz)
类图
参与者Component
为组合中的对象声明接口
在适当的情况下,实现所有类共有接口的缺省行为。
声明一个接口用于访问和管理Component的子组件
(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适情况下实现它。
Leaf
在组合中表示叶节点对象,叶节点没有子节点。
在组合中定义对象的行为。
Composite
定义有子部件的的那些部件的行为
存储子部件
在Component接口中实现与子部件有关的操作。
Client
通过Component接口操纵组合部件的对象
代码:还有错。。。
#include <iostream> #include <string> #include <vector> using namespace std; class Component { protected: string name; public: virtual void Add(Component *c); virtual void Remove(Component *c); virtual void Display(int depth); Component(string name) { this->name = name; } }; class Composite:public Component { private: vector<Component *> children; public: Composite(string name):Component(name) { } void Add(Component *c) { children.push_back(c); } void Remove(Component *c) { //children.delete(c); } void Display(int depth) { for(int i=0; i<depth; i++) cout<<"-"; cout<<name<<endl; for(vector<Component *>::iterator iter = children.begin(); iter!=children.end(); iter++) { (*iter)->Display(depth+2); } } }; class Leaf:public Component { public: Leaf(string name):Component(name) { } void Display(int depth) { for(int i=0; i<depth; i++) cout<<"-"; cout<<name<<endl; } }; int main() { Composite *root = new Composite("root"); root->Add(new Leaf("Leaf A")); root->Add(new Leaf("Leaf B")); Composite *comp = new Composite("Composite X"); comp->Add(new Leaf("Leaf XA")); comp->Add(new Leaf("Leaf xB")); root->Add(comp); root->Display(1); }
来自为知笔记(Wiz)
相关文章推荐
- Java设计模式透析之 —— 组合(Composite)
- Java设计模式透析之 —— 组合(Composite)
- 组合模式——Composite
- 组合模式,Composite
- 设计模式学习-Composite(组合模式)
- 设计模式之Composite组合设计模式
- 结构模式之Composite(组合)
- Java设计模式透析之 —— 组合(Composite)
- php设计模式 Composite (组合模式)
- Composite (组合模式)
- 组合(composite)模式
- 组合模式 composite
- Java模式 - Composite(组合模式)
- 设计模式--组合模式Composite(结构性)
- 设计模式--组合模式Composite(结构型)
- 组合模式(Composite)
- Java设计模式透析之 —— 组合(Composite)
- 设计模式(八):组合模式Composite(结构型模式)
- Composite组合模式
- Composite——组合模式