生成器模式及C++代码实现
生活随笔
收集整理的這篇文章主要介紹了
生成器模式及C++代码实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ?理論學(xué)習(xí):
? ? ? ?生成器模式:生成器顧名思義就是生成對(duì)象的一種工具(器械),不過(guò)它和工廠模式不一樣,生成器模式強(qiáng)調(diào)一步一步創(chuàng)建對(duì)象,并通過(guò)相同的創(chuàng)建過(guò)程可以獲得不同結(jié)果的對(duì)象(這一點(diǎn)在具體實(shí)現(xiàn)中用多態(tài)),將對(duì)象的創(chuàng)建過(guò)程和這個(gè)對(duì)象的表示分離開來(lái)!
? ? ? ?同樣是討論關(guān)于對(duì)象的創(chuàng)建問題,生成器模式和工廠模式到底有什么區(qū)別?? ? ? ?我認(rèn)為生成器模式和工廠模式的區(qū)別在于:由于工廠模式對(duì)對(duì)象的創(chuàng)建是一步到位,所以生產(chǎn)出來(lái)的對(duì)象基本上是事先敲定的那樣!這樣靈活性不好! 而生成器模式對(duì)對(duì)象的創(chuàng)建是一步一步來(lái)的,雖然說(shuō)是相同的創(chuàng)建過(guò)程,但是每一步的具體創(chuàng)建過(guò)程的實(shí)施的細(xì)微之處是可以由程序設(shè)計(jì)者仔細(xì)控制的,因而靈活性較大!?
? ? ? ?實(shí)例分析:
? ? ? ?實(shí)例:比如我現(xiàn)在要生產(chǎn)大眾和奇瑞兩種汽車,我們知道要制造一輛汽車可不是件容易的事,汽車是個(gè)非常復(fù)雜的對(duì)象,我現(xiàn)在假定汽車由A,B,C,D四個(gè)模塊組成,我要生產(chǎn)一輛汽車,那么必須先做出A模塊,再做出B模塊,然后做出C模塊,最后做出D模塊。然后把這些模塊組裝起來(lái),就成了一輛汽車了。奇瑞和大眾汽車的制造過(guò)程都是一樣的! 那么我在具體實(shí)現(xiàn)中汽車設(shè)計(jì)師(指揮者類)先把汽車制造的整個(gè)制造過(guò)程規(guī)劃好,然后下面汽車工人按照相同的制造過(guò)程就造好了大眾和奇瑞兩種汽車!汽車設(shè)計(jì)師只管設(shè)計(jì)和規(guī)劃汽車的制造過(guò)程,具體每個(gè)過(guò)程的實(shí)現(xiàn)是由下面的汽車工人來(lái)做的,設(shè)計(jì)者只管設(shè)計(jì),實(shí)施者只管實(shí)施,二者互補(bǔ)干擾! 設(shè)計(jì)只管對(duì)象的表示(建模),實(shí)施者只管具體創(chuàng)建過(guò)程的實(shí)施,這樣就將對(duì)象的創(chuàng)建過(guò)程和這個(gè)對(duì)象的表示分開來(lái)了!?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2014.4.13日晚 ?
?生成器模式的C++代碼實(shí)現(xiàn):
#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; }
總結(jié)
以上是生活随笔為你收集整理的生成器模式及C++代码实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双11,立减¥3554!戴尔官网撩客服砍
- 下一篇: C++代码实现 生成器模式