生成器模式及C++代码实现
生活随笔
收集整理的這篇文章主要介紹了
生成器模式及C++代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ?理論學習:
? ? ? ?生成器模式:生成器顧名思義就是生成對象的一種工具(器械),不過它和工廠模式不一樣,生成器模式強調一步一步創建對象,并通過相同的創建過程可以獲得不同結果的對象(這一點在具體實現中用多態),將對象的創建過程和這個對象的表示分離開來!
? ? ? ?同樣是討論關于對象的創建問題,生成器模式和工廠模式到底有什么區別?? ? ? ?我認為生成器模式和工廠模式的區別在于:由于工廠模式對對象的創建是一步到位,所以生產出來的對象基本上是事先敲定的那樣!這樣靈活性不好! 而生成器模式對對象的創建是一步一步來的,雖然說是相同的創建過程,但是每一步的具體創建過程的實施的細微之處是可以由程序設計者仔細控制的,因而靈活性較大!?
? ? ? ?實例分析:
? ? ? ?實例:比如我現在要生產大眾和奇瑞兩種汽車,我們知道要制造一輛汽車可不是件容易的事,汽車是個非常復雜的對象,我現在假定汽車由A,B,C,D四個模塊組成,我要生產一輛汽車,那么必須先做出A模塊,再做出B模塊,然后做出C模塊,最后做出D模塊。然后把這些模塊組裝起來,就成了一輛汽車了。奇瑞和大眾汽車的制造過程都是一樣的! 那么我在具體實現中汽車設計師(指揮者類)先把汽車制造的整個制造過程規劃好,然后下面汽車工人按照相同的制造過程就造好了大眾和奇瑞兩種汽車!汽車設計師只管設計和規劃汽車的制造過程,具體每個過程的實現是由下面的汽車工人來做的,設計者只管設計,實施者只管實施,二者互補干擾! 設計只管對象的表示(建模),實施者只管具體創建過程的實施,這樣就將對象的創建過程和這個對象的表示分開來了!?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2014.4.13日晚 ?
?生成器模式的C++代碼實現:
#include<iostream> #include<string> using namespace std; class Car { public:virtual void CreatPartA() = 0;virtual void CreatPartB() = 0;virtual void CreatPartC() = 0;virtual void CreatPartD() = 0; };class DazhongCar :public Car { public:virtual void CreatPartA(){cout <<endl<<"大眾汽車:"<<endl<< "大眾汽車A部分" << endl;}virtual void CreatPartB(){cout << "大眾汽車B部分" << endl;}virtual void CreatPartC(){cout << "大眾汽車C部分" << endl;}virtual void CreatPartD(){cout << "大眾汽車D部分" << endl;} };class Qirui :public Car { public:virtual void CreatPartA(){cout << endl << "奇瑞汽車:" << endl << "奇瑞汽車A部分" << endl;}virtual void CreatPartB(){cout << "奇瑞汽車B部分" << endl;}virtual void CreatPartC(){cout << "奇瑞汽車C部分" << endl;}virtual void CreatPartD(){cout << "奇瑞汽車D部分" << endl;} };class Direct //指揮者類 { public:Direct(Car*Temp){C = Temp;}void Create(){C->CreatPartA();C->CreatPartB();C->CreatPartC();C->CreatPartD();} private:Car*C; };int main(void) {Car*D = new DazhongCar;Car*Q = new Qirui;Direct *A = new Direct(D);Direct *B = new Direct(Q);A->Create();B->Create();delete D;delete Q;delete A;delete B;return 0; }
總結
以上是生活随笔為你收集整理的生成器模式及C++代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双11,立减¥3554!戴尔官网撩客服砍
- 下一篇: C++代码实现 生成器模式