設計模式:組合模式
組合模式:將物件組合成樹型結構以表示‘部分-整體’的層次結構。組合模式使使用者對單個物件和組合物件的使用具有一致性。
需求中體現部分和整體層次的結構時,已經你希望使用者可以忽略組合物件與單個物件的不同,統一使用組合結構中的所有物件時,就應該考慮使用組合模式
需求中體現部分和整體層次的結構時,已經你希望使用者可以忽略組合物件與單個物件的不同,統一使用組合結構中的所有物件時,就應該考慮使用組合模式
點選(此處)摺疊或開啟
-
class Component{
-
protected:
-
string name;
-
public:
-
virtual void add( Component c);
-
virtual void remove( Component c);
-
virtual void Display( int depth);
-
};
-
-
class Leaf : public Component{
-
public:
-
Leaf(string name):Component(name){}
-
void add(Component c){
-
cout<<\"Cannot add to a leaf\"<<endl;
-
}
-
void remove( Component c ){
-
cout<<\"Cannot remove from a leaf\"<<endl;
-
}
-
void Display( int depth )
-
{
-
cout<<new string(\'-\',depth)<<name<<endl;
-
}
-
};
-
-
class Composite : public Component{
-
private:
-
list<Component> children = new list<Component>();
-
public:
-
Composite(string name):Component(name) {}
-
void add(Component c){
-
children.add(c);
-
}
-
void remove( Component c ){
-
children.remove(c);
-
}
-
void Display( int depth )
-
{
-
cout<<new string(\'-\',depth)<<name<<endl;
-
for( Component component in children)
-
{
-
component.Display(depth+2);
-
}
-
}
-
};
-
-
void main()
-
{
-
Composite root=new Composite(\"root\");
-
root.add(new leaf(\"Leaf A\"));
-
root.add(new leaf(\"Leaf B\"));
-
-
Composite comp=new Composite(\"Composit X\");
-
comp.add(new leaf(\"Leaf XA\"));
-
comp.add(new leaf(\"Leaf XB\"));
-
-
root.add(comp);
-
-
Composite comp2=new Composite(\"Composit XY\");
-
comp.add(new leaf(\"Leaf XYA\"));
-
comp.add(new leaf(\"Leaf XYB\"));
-
-
comp.add(comp2);
-
-
root.add(new leaf(\"leaf C\"));
-
-
leaf lef=new leaf(\"new leaf D\");
-
root.add(lef);
-
root.remove(lef);
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29012686/viewspace-1131033/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【設計模式】組合模式設計模式
- 設計模式《組合模式》設計模式
- 設計模式-組合模式設計模式
- js設計模式–組合模式JS設計模式
- js設計模式--組合模式JS設計模式
- 設計模式系列 – 組合模式設計模式
- javascript設計模式組合模式JavaScript設計模式
- 設計模式(十三):組合模式設計模式
- PHP 設計模式之組合模式PHP設計模式
- GoLang設計模式20 - 組合模式Golang設計模式
- 設計模式【11】-- 搞定組合模式設計模式
- 【C++設計模式】組合模式C++設計模式
- 徒手擼設計模式-組合模式設計模式
- 極簡設計模式-組合模式設計模式
- 設計模式系列之「組合模式」設計模式
- 大話設計模式—組合模式設計模式
- 軟體設計模式————(組合模式)設計模式
- 23種設計模式之組合模式設計模式
- 《Head First 設計模式》:組合模式設計模式
- Java設計模式之(十)——組合模式Java設計模式
- 【趣味設計模式系列】之【組合模式】設計模式
- javascript設計模式 之 7組合模式JavaScript設計模式
- 設計模式系列7--組合模式設計模式
- 設計模式漫談之組合模式設計模式
- C#設計模式之組合模式C#設計模式
- c#設計模式_全部部分模式_組合模式C#設計模式
- 《設計模式四》觀察、組合、享元模式設計模式
- [C++設計模式] composite 組合模式C++設計模式
- 設計模式之組合模式(Composite)分享設計模式
- 設計模式 | 組合模式及典型應用設計模式
- Java設計模式學習08——組合模式Java設計模式
- 《設計模式》 - 7. 組合模式( Composite )設計模式
- 設計模式之組合模式---Composite Pattern設計模式
- 設計模式(十四、十五)----結構型模式之組合模式設計模式
- JavaScript設計模式之策略模式【組合委託】JavaScript設計模式
- 設計模式(十)——組合模式(HashMap原始碼解析)設計模式HashMap原始碼
- 每天一個設計模式之組合模式設計模式
- C#設計模式-組合模式(Composite Pattern)C#設計模式