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

posts - 183,  comments - 10,  trackbacks - 0

來自于《大話設計模式》
工廠方法模式(Factory Method):定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。

有一個操作類 Operation,繼承其而派生出具體各個操作的操作派生類。
產(chǎn)生操作類的工廠基類 IFactory,繼承其而派生出產(chǎn)生具體操作類的工廠派生類。

UML 類圖:


代碼實現(xiàn) C++:

  1 #include <iostream>
  2 #include <cmath>
  3 using namespace std;
  4 
  5 class Operation
  6 {
  7 protected:
  8     double NumberA;
  9     double NumberB;
 10 public:
 11     virtual void SetNumberA(double a)
 12     {
 13         NumberA = a;
 14     }
 15     virtual void SetNumberB(double b)
 16     {
 17         NumberB = b;
 18     }
 19     virtual double GetResult() = 0;
 20 };
 21 
 22 class OperationAdd : public Operation
 23 {
 24 public:
 25     virtual double GetResult()
 26     {
 27         return NumberA + NumberB;
 28     }
 29 };
 30 
 31 class OperationSub : public Operation
 32 {
 33 public:
 34     virtual double GetResult()
 35     {
 36         return NumberA - NumberB;
 37     }
 38 };
 39 
 40 class OperationMul : public Operation
 41 {
 42 public:
 43     virtual double GetResult()
 44     {
 45         return NumberA * NumberB;
 46     }
 47 };
 48 
 49 class OperationDiv : public Operation
 50 {
 51 public:
 52     virtual double GetResult()
 53     {
 54         if (NumberB == 0)
 55         {
 56             throw runtime_error("NumberB = 0!");
 57         }
 58         return NumberA / NumberB;
 59     }
 60 };
 61 
 62 class OperationPow : public Operation
 63 {
 64 public:
 65     virtual double GetResult()
 66     {
 67         if (NumberA == 0 && NumberB <= 0)
 68         {
 69             throw runtime_error("NumberA = 0, NumberB <= 0!");
 70         }
 71         return pow(NumberA, NumberB);
 72     }
 73 };
 74 
 75 class IFactory
 76 {
 77 public:
 78     virtual Operation* CreateOperation() = 0;
 79 };
 80 
 81 class AddFactory : public IFactory
 82 {
 83 public:
 84     virtual Operation* CreateOperation()
 85     {
 86         return new OperationAdd;
 87     }
 88 };
 89 
 90 class SubFactory : public IFactory
 91 {
 92 public:
 93     virtual Operation* CreateOperation()
 94     {
 95         return new OperationSub;
 96     }
 97 };
 98 
 99 class MulFactory : public IFactory
100 {
101 public:
102     virtual Operation* CreateOperation()
103     {
104         return new OperationMul;
105     }
106 };
107 
108 class DivFactory : public IFactory
109 {
110 public:
111     virtual Operation* CreateOperation()
112     {
113         return new OperationDiv;
114     }
115 };
116 
117 class PowFactory : public IFactory
118 {
119 public:
120     virtual Operation* CreateOperation()
121     {
122         return new OperationPow;
123     }
124 };
125 
126 int main()
127 {
128     double a, b;
129     while (cin >> a >> b)
130     {
131         IFactory* pfactory = new AddFactory;
132         Operation* poperation = pfactory->CreateOperation();
133         poperation->SetNumberA(a);
134         poperation->SetNumberB(b);
135         cout << poperation->GetResult() << endl;
136         delete pfactory;
137         delete poperation;
138 
139         pfactory = new SubFactory;
140         poperation = pfactory->CreateOperation();
141         poperation->SetNumberA(a);
142         poperation->SetNumberB(b);
143         cout << poperation->GetResult() << endl;
144         delete pfactory;
145         delete poperation;
146 
147         pfactory = new MulFactory;
148         poperation = pfactory->CreateOperation();
149         poperation->SetNumberA(a);
150         poperation->SetNumberB(b);
151         cout << poperation->GetResult() << endl;
152         delete pfactory;
153         delete poperation;
154 
155         pfactory = new DivFactory;
156         poperation = pfactory->CreateOperation();
157         poperation->SetNumberA(a);
158         poperation->SetNumberB(b);
159         try
160         {
161             cout << poperation->GetResult() << endl;
162         }
163         catch (const runtime_error& e)
164         {
165             cerr << e.what() << endl;
166         }
167         delete pfactory;
168         delete poperation;
169 
170         pfactory = new PowFactory;
171         poperation = pfactory->CreateOperation();
172         poperation->SetNumberA(a);
173         poperation->SetNumberB(b);
174         cout << poperation->GetResult() << endl;
175         delete pfactory;
176         delete poperation;
177     }
178 }
posted on 2011-04-25 15:30 unixfy 閱讀(221) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日本精品| 欧美制服丝袜第一页| 亚洲精选在线观看| 玖玖在线精品| 午夜电影亚洲| 一区二区三区成人精品| 国产视频一区二区在线观看| 欧美看片网站| 欧美理论在线播放| 久热国产精品| 老司机一区二区| 久久不射中文字幕| 欧美资源在线| 欧美成人乱码一区二区三区| 男男成人高潮片免费网站| 卡通动漫国产精品| 欧美精品1区2区| 欧美视频网址| 国产色婷婷国产综合在线理论片a| 国产精品亚洲精品| 狠狠色狠狠色综合日日小说| 影音先锋欧美精品| 日韩视频免费在线| 亚洲中字在线| 久久视频一区| 亚洲精品免费电影| 99热这里只有成人精品国产| 亚洲在线一区二区| 久久精品一区二区三区不卡牛牛| 另类人畜视频在线| 国产精品视频一区二区三区| 在线观看91精品国产麻豆| 亚洲小说欧美另类婷婷| 久久精品欧美日韩| 中文一区在线| 国产专区综合网| 欧美福利视频在线| 免费观看日韩| 在线国产精品播放| 亚洲国产91精品在线观看| 久久久999| 欧美午夜精彩| 亚洲黄色在线观看| 久久精品免费电影| 一区二区日本视频| 蜜桃精品久久久久久久免费影院| 欧美日韩免费一区| 亚洲日本欧美天堂| 老司机成人在线视频| 午夜精品99久久免费| 欧美日本国产| 亚洲国产精彩中文乱码av在线播放| 亚洲男女毛片无遮挡| 亚洲一区www| 国产精品二区三区四区| 香蕉久久夜色精品国产使用方法| 在线亚洲+欧美+日本专区| 国产精品拍天天在线| 欧美一区二区三区免费大片| 欧美影院在线| 亚洲国产婷婷| 日韩视频专区| 国产精品综合视频| 蜜桃久久av| 欧美日韩精品三区| 亚洲欧美一级二级三级| 亚洲欧美激情诱惑| 免费欧美电影| 亚洲一区二区三区国产| 亚洲欧美一区二区精品久久久| 在线观看亚洲精品视频| 99精品免费网| 麻豆freexxxx性91精品| 欧美日韩综合精品| 亚洲精品国久久99热| 亚洲国产成人av| 久久人人爽人人爽| 欧美一区二区三区成人| 欧美激情bt| 欧美激情在线播放| 国产日韩一区二区三区在线播放| 亚洲黄色在线视频| 在线观看欧美日韩| 午夜精品成人在线视频| 一级日韩一区在线观看| 欧美大片在线观看一区二区| 久久人91精品久久久久久不卡| 欧美深夜影院| 亚洲人成久久| 在线观看三级视频欧美| 这里是久久伊人| 欧美一级片久久久久久久| 国产精品乱码妇女bbbb| 久久精品国产2020观看福利| 欧美怡红院视频| 午夜欧美大尺度福利影院在线看| 免费成人av在线看| 久久久久久夜精品精品免费| 欧美噜噜久久久xxx| 久久人人97超碰精品888| 国产精品久久久久久久电影| 欧美高清自拍一区| 亚洲国产欧美精品| 狼狼综合久久久久综合网| 久久久天天操| 国产一区二区中文| 亚洲伊人一本大道中文字幕| 一本色道久久88综合日韩精品| 亚洲一级在线观看| 中日韩在线视频| 欧美日产在线观看| 亚洲狼人综合| 小处雏高清一区二区三区| 久久综合图片| 欧美国产成人精品| 在线观看欧美日本| 国产精品v一区二区三区| 欧美一区二区精品在线| 亚洲在线播放| 欧美激情一区二区在线| 日韩视频在线免费观看| 亚洲欧美一区二区激情| 亚洲精品乱码久久久久久| 亚洲欧美在线另类| 亚洲一区日本| 欧美视频在线观看| 日韩亚洲精品在线| 午夜日本精品| 在线观看视频亚洲| 欧美午夜视频网站| 午夜精品福利电影| 麻豆91精品| 一区二区三区视频免费在线观看| 欧美日韩亚洲综合| 欧美成在线观看| 午夜综合激情| 在线不卡中文字幕| 欧美午夜在线| 欧美黄色一级视频| 老司机一区二区三区| 亚洲伊人网站| 99视频日韩| 亚洲黄色在线观看| 久久成人人人人精品欧| 日韩视频免费| 美女91精品| 久久精品国产欧美亚洲人人爽| 一区二区三区免费在线观看| 国产乱码精品1区2区3区| 亚洲午夜精品久久久久久app| 亚洲免费视频网站| 一区二区三区自拍| 国产日韩一区欧美| 国产女人精品视频| 国产丝袜一区二区三区| 久久久久成人精品| 久热精品视频在线免费观看| 欧美中文字幕久久| 久久久久国产精品www| 久久av免费一区| 久久综合中文色婷婷| 欧美精品网站| 国产精品国产精品| 国产精品久久久99| 国产欧美亚洲视频| 欧美日韩中国免费专区在线看| 国产精品一区免费视频| 国产日韩精品在线播放| 国产精品嫩草久久久久| 国产精品欧美日韩一区| 国产精品一区二区久久久久| 永久域名在线精品| 亚洲欧洲一区二区三区在线观看| 狠狠操狠狠色综合网| 亚洲三级色网| 中国成人亚色综合网站| 久久久美女艺术照精彩视频福利播放 | 亚洲小少妇裸体bbw| 一本色道久久88精品综合| 亚洲视频成人| 亚洲一区二区三区在线| 久久黄金**| 欧美激情视频一区二区三区在线播放| 欧美日韩亚洲一区二区| 国产精品亚洲综合| 亚洲精品色图| 欧美自拍偷拍| 欧美高清视频免费观看| 欧美在线视频不卡| 乱中年女人伦av一区二区| 欧美日韩亚洲综合一区| 黄色亚洲大片免费在线观看| 国产精品久99| 亚洲开发第一视频在线播放| 久久xxxx精品视频| 亚洲一区不卡| 欧美日韩综合在线免费观看| 国产日产欧产精品推荐色 | 99成人在线| 欧美精品日韩|