青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 183,  comments - 10,  trackbacks - 0

來自于《大話設計模式》
訪問者模式(Visitor):
表示一個作用于某對象結構中的個元素的操作。它是你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。

行為型

UML 類圖:



代碼實現 C++:
  1 #include <iostream>
  2 #include <list>
  3 #include <algorithm>
  4 #include <string>
  5 using namespace std;
  6 
  7 class Action;
  8 
  9 class Person
 10 {
 11 protected:
 12     string name;
 13 public:
 14     Person(const string& s = "Person") : name(s) {}
 15     virtual void Accept(Action* visitor) = 0;
 16     virtual string getName()
 17     {
 18         return name;
 19     }
 20 };
 21 
 22 class Man;
 23 class Woman;
 24 
 25 class Action
 26 {
 27 protected:
 28     string name;
 29 public:
 30     Action(const string& s = "Action") : name(s) {}
 31     virtual void GetManConclusion(Man* m) = 0;
 32     virtual void GetWomanConclusion(Woman* w) = 0;
 33 };
 34 
 35 class Man : public Person
 36 {
 37 public:
 38     Man(const string& s = "Man") : Person(s) {}
 39     virtual void Accept(Action* visitor)
 40     {
 41         visitor->GetManConclusion(this);
 42     }
 43 };
 44 
 45 class Woman : public Person
 46 {
 47 public:
 48     Woman(const string& s = "Woman") : Person(s) {}
 49     virtual void Accept(Action* visitor)
 50     {
 51         visitor->GetWomanConclusion(this);
 52     }
 53 };
 54 
 55 class Success : public Action
 56 {
 57 public:
 58     Success(const string& s = "Success") : Action(s) {}
 59     virtual void GetManConclusion(Man* m)
 60     {
 61         cout << name << endl;
 62         cout << m->getName() << endl;
 63         cout << "1" << endl;
 64     }
 65     virtual void GetWomanConclusion(Woman* w)
 66     {
 67         cout << name << endl;
 68         cout << w->getName() << endl;
 69         cout << "2" << endl;
 70     }
 71 };
 72 
 73 class Failing : public Action
 74 {
 75 public:
 76     Failing(const string& s = "Failing") : Action(s) {}
 77     virtual void GetManConclusion(Man* m)
 78     {
 79         cout << name << endl;
 80         cout << m->getName() << endl;
 81         cout << "3" << endl;
 82     }
 83     virtual void GetWomanConclusion(Woman* w)
 84     {
 85         cout << name << endl;
 86         cout << w->getName() << endl;
 87         cout << "4" << endl;
 88     }
 89 };
 90 
 91 class Amativeness : public Action
 92 {
 93 public:
 94     Amativeness(const string& s = "Amativeness") : Action(s) {}
 95     virtual void GetManConclusion(Man* m)
 96     {
 97         cout << name << endl;
 98         cout << m->getName() << endl;
 99         cout << "5" << endl;
100     }
101     virtual void GetWomanConclusion(Woman* w)
102     {
103         cout << name << endl;
104         cout << w->getName() << endl;
105         cout << "6" << endl;
106     }
107 };
108 
109 class Marriage : public Action
110 {
111 public:
112     Marriage(const string& s = "Marriage") : Action(s) {}
113     virtual void GetManConclusion(Man* m)
114     {
115         cout << name << endl;
116         cout << m->getName() << endl;
117         cout << "7" << endl;
118     }
119     virtual void GetWomanConclusion(Woman* w)
120     {
121         cout << name << endl;
122         cout << w->getName() << endl;
123         cout << "8" << endl;
124     }
125 };
126 
127 class ObjectStructure
128 {
129 private:
130     list<Person*> elements;
131 public:
132     ObjectStructure() {}
133     ~ObjectStructure()
134     {
135         for (list<Person*>::iterator iter = elements.begin(); iter != elements.end(); ++iter)
136         {
137             delete (*iter);
138         }
139     }
140     void Attach(Person* element)
141     {
142         elements.push_back(element);
143     }
144     void Detach(Person* element)
145     {
146         list<Person*>::iterator iter = find(elements.begin(), elements.end(), element);
147         if (iter != elements.end())
148         {
149             elements.erase(iter);
150         }
151     }
152     void Display(Action* visitor)
153     {
154         for (list<Person*>::iterator iter = elements.begin(); iter != elements.end(); ++iter)
155         {
156             (*iter)->Accept(visitor);
157         }
158     }
159     int size()
160     {
161         return elements.size();
162     }
163 };
164 
165 int main()
166 {
167     ObjectStructure o;
168     o.Attach(new Man);
169     o.Attach(new Woman);
170 
171     cout << o.size() << endl;
172 
173     Success* v1 = new Success;
174     o.Display(v1);
175     Failing* v2 = new Failing;
176     o.Display(v2);
177     Amativeness* v3 = new Amativeness;
178     o.Display(v3);
179     Marriage* v4 = new Marriage;
180     o.Display(v4);
181 
182     delete v4;
183     delete v3;
184     delete v2;
185     delete v1;
186 
187     return 0;
188 }
posted on 2011-04-30 15:21 unixfy 閱讀(468) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费黄网站欧美| 亚洲欧美色婷婷| 欧美成ee人免费视频| 欧美一区二区三区四区视频| 欧美激情一区二区| 久久综合亚州| 欧美国产日韩视频| 亚洲欧洲在线观看| 最新热久久免费视频| 一区二区三欧美| 亚洲欧美日韩视频二区| 久久精品日产第一区二区三区| 久久国内精品视频| 欧美v国产在线一区二区三区| 蜜臀av在线播放一区二区三区| 国产九色精品成人porny| 久久亚洲精品网站| 午夜亚洲视频| 欧美在线免费视屏| 欧美大片18| 国产精品久久影院| 一区二区三区在线观看欧美| 99re66热这里只有精品4| 香蕉尹人综合在线观看| 久久久蜜臀国产一区二区| 亚洲精品麻豆| 午夜精品在线| 欧美一区亚洲| 久久久久国产精品人| 欧美偷拍另类| 亚洲美女在线看| 免费在线日韩av| 亚洲欧美日韩精品久久| 欧美日韩精品久久| 日韩午夜电影av| 亚洲国产精品va在线看黑人动漫| 久久av二区| 一区在线播放视频| 欧美一级久久久| 亚洲在线视频一区| 国产美女扒开尿口久久久| 在线亚洲免费| 亚洲视屏一区| 国产精品成人久久久久| 亚洲图片在线| 亚洲五月婷婷| 狠狠久久婷婷| 欧美a级理论片| 欧美日韩国产一区二区三区| 一本色道久久综合狠狠躁篇的优点| 欧美电影资源| 欧美日韩一区在线播放| 亚洲欧美日韩国产| 久久久久久有精品国产| 一区二区av在线| 小黄鸭精品密入口导航| 91久久久国产精品| 久久精品成人欧美大片古装| 亚洲一区二区三区四区在线观看 | 欧美人与性动交α欧美精品济南到 | 久久天堂精品| 欧美精品一区二区三区在线看午夜| 亚洲午夜影视影院在线观看| 欧美在线网站| 亚洲免费视频一区二区| 欧美—级在线免费片| 欧美专区在线观看一区| 欧美日韩一区精品| 亚洲黄色在线看| 亚洲日本中文字幕区| 久久综合久色欧美综合狠狠 | 欧美一区二区三区另类 | 午夜一区二区三区不卡视频| 亚洲高清在线观看| 欧美在线播放视频| 麻豆91精品91久久久的内涵| 国产在线精品一区二区夜色| 9l国产精品久久久久麻豆| 亚洲欧美视频在线观看视频| 欧美性一区二区| 亚洲视频一二三| 亚洲欧美国产高清| 国产手机视频一区二区| 欧美永久精品| 欧美风情在线观看| 一区二区三区欧美在线| 91久久久久久| 一本久久综合亚洲鲁鲁五月天| 久久综合给合久久狠狠色 | 欧美一区日本一区韩国一区| 欧美特黄一区| 久久久久久久999| 99在线热播精品免费| 久久黄色影院| 一区二区三区四区国产| 国产亚洲欧洲| 欧美日韩国产综合久久| 欧美在线视频全部完| 亚洲精品免费电影| 免费成人性网站| 亚洲欧美在线磁力| 亚洲精品综合| 在线观看欧美视频| 国产一区二区无遮挡| 欧美精品在线免费| 久久蜜桃精品| 欧美在线播放视频| 欧美亚洲一区在线| 香蕉久久夜色精品国产| 亚洲视频第一页| 国产精品99久久久久久www| 欧美成人中文| 久久中文字幕一区| 久久婷婷激情| 免费看精品久久片| 亚洲福利视频在线| 亚洲国产精品99久久久久久久久| 麻豆91精品| 亚洲日本欧美| 欧美韩日视频| 久久精品成人一区二区三区 | 欧美日本一区二区高清播放视频| 一区二区三区成人精品| 亚洲网站在线| 亚洲女同同性videoxma| 欧美在线一二三区| 嫩草影视亚洲| 一本大道久久a久久综合婷婷| 亚洲无线视频| 久久久久亚洲综合| 欧美日韩午夜视频在线观看| 国产精品永久免费| 亚洲精品一区二区三区婷婷月| 一区二区久久久久久| 久久精品国产精品亚洲综合| 欧美成人一区在线| 久久av一区二区三区漫画| 欧美va亚洲va香蕉在线| 国产欧美一区二区精品秋霞影院 | 国产一区二区高清不卡| 亚洲人永久免费| 久久精品人人做人人爽电影蜜月| 欧美激情1区2区3区| 午夜免费久久久久| 欧美日韩伦理在线| 日韩亚洲欧美综合| 欧美mv日韩mv国产网站app| 中日韩高清电影网| 国产精品成人免费| 亚洲一区影音先锋| 中日韩视频在线观看| 欧美aa在线视频| 亚洲第一精品夜夜躁人人躁| 久久久久se| 久久久蜜臀国产一区二区| 国产亚洲欧美一区二区三区| 欧美在线首页| 久久男人av资源网站| 136国产福利精品导航网址应用| 欧美一级一区| 久久riav二区三区| 一区二区三区在线视频播放| 欧美性猛交99久久久久99按摩| 99精品视频免费观看视频| 亚洲理论电影网| 国产精品亚洲片夜色在线| 欧美在线视频免费播放| 久久久久国产精品www| 亚洲欧洲日产国产网站| 99在线热播精品免费| 国语自产精品视频在线看8查询8| 久热精品视频| 国产精品国产三级国产a| 久久久精品999| 欧美深夜福利| 欧美激情精品久久久久久| 欧美日韩精品免费观看| 裸体丰满少妇做受久久99精品| 欧美视频精品一区| 亚洲国产精品一区| 一区二区三区在线观看欧美| 日韩一级黄色大片| 亚洲三级视频在线观看| 久久狠狠婷婷| 午夜视频在线观看一区二区三区| 亚洲黄网站在线观看| 欧美在线一区二区| 欧美中文在线字幕| 国产乱码精品一区二区三区不卡 | 尤物yw午夜国产精品视频明星| 最新国产精品拍自在线播放| 亚洲福利视频在线| 男人的天堂成人在线| 欧美国产三区| 日韩视频一区二区| 国产精品国产| 欧美一级理论性理论a| 久久视频一区二区| 亚洲精品永久免费| 欧美亚一区二区|