decorator模式

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class compoent
 5 {
 6 public:
 7     compoent(){}
 8     virtual ~compoent(){}
 9 
10     virtual void Operation(){};
11 };
12 
13 class concretecompoent:public compoent{
14     virtual void Operation(){cout<<"I can only do AAAAAAAAAAAAAA!!!!\n";};
15 
16 };
17 
18 class decorator:public compoent{
19 public:
20 virtual void Operation(){};
21 };
22 
23 class concretedecorator1:public decorator{
24 public:
25     compoent* p_com;
26     concretedecorator1(compoent* var){
27         p_com=var;
28     }
29     virtual void Operation(){
30         p_com->Operation();
31         cout<<"I can also do BBBBBBBBBBBBBB!!!!\n";
32     }
33 };
34 
35 class concretedecorator2:public decorator{
36 public:
37     compoent* p_com;
38     concretedecorator2(compoent* var){
39         p_com=var;
40     }
41     virtual void Operation(){
42         p_com->Operation();
43         cout<<"I can also do CCCCCCCCCCCCCCC!!!!\n";
44     }
45 };
46 int main()
47 {
48     compoent* orign=new concretecompoent();
49     orign->Operation();
50     concretedecorator1* decor1=new concretedecorator1(orign);
51     concretedecorator2* decor2=new concretedecorator2(decor1);
52     concretedecorator1* decor3=new concretedecorator1(decor2);
53     decor3->Operation();
54     return 0;
55 }

posted on 2012-07-19 16:23  kakamilan  阅读(169)  评论(0编辑  收藏  举报

导航