初学设计模式之组合模式

Posted wuhongjian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学设计模式之组合模式相关的知识,希望对你有一定的参考价值。

组合模式的代码例子

 1 #include<iostream>
 2 #include<string>
 3 #include<list>
 4 using namespace std;
 5 
 6 class Component
 7 {
 8 public:
 9     virtual void show(){};
10 
11 };
12 class leaf:public Component
13 {
14 private:
15    string info;
16 
17 public:
18     leaf(string m_info)
19     {
20        info=m_info;
21     };
22     void show()
23     {
24         cout<<info<<endl;
25     };
26 
27 };
28 
29 class ConcreteComponent:public Component
30 {
31 private:
32    string info;
33    list<Component*>m_list;
34 public:
35     ConcreteComponent(string m_info)
36     {
37        info=m_info;
38     };
39     void add(Component* m_ComponentPtr)
40     {
41         m_list.push_back(m_ComponentPtr);
42     };
43     void show()
44     {
45         cout<<info<<endl;
46         list<Component*>::iterator iter=m_list.begin();
47         for (iter;iter!=m_list.end();iter++)
48         {
49             (*iter)->show();
50         }
51     };
52 
53 };
54 
55 int main()
56 {
57     ConcreteComponent m_sum("总部");
58     ConcreteComponent m_com1("分部1");
59     ConcreteComponent m_com2("分部2");
60     leaf m_leaf1("子公司1");
61     leaf m_leaf2("子公司2");
62 
63     m_com1.add(&m_leaf1);
64     m_com1.add(&m_leaf2);
65     m_sum.add(&m_com1);
66     m_sum.add(&m_com2);
67 
68     m_sum.show();
69 
70     getchar();
71     return 0;
72 };

 

以上是关于初学设计模式之组合模式的主要内容,如果未能解决你的问题,请参考以下文章

初学设计模式之命令模式

设计模式之组合模式

设计模式之组合模式

设计模式之组合模式

设计模式探秘之组合模式

学习设计模式之组合模式