c++設計模式之四:Builder Pattern

     Builder模式要解決的問題是,當我們要創建很複雜的對象時,有時候需要將複雜對象的創建過程和這個對象的表示分離開來。由於在每一步的構造過程中可以映入不同參數,所以步驟相同但是最後的對象卻不一樣。也就是說將產品的內部表象和產品的生成過程分割開來,從而使一個建造過程生成具有不同的內部表象的產品對象。
 
    Builder模式的關鍵在於在創建一個複雜對象時,其組合過程往往涉及複雜的處理,同時,這種職責的分離使得修改複雜對象的組合邏輯變得獨立而簡單。
 
Builder模式的典型結構圖爲:
 
代碼如下:
  1. #include<iostream>
  2. using namespace std;
  3. class PCBuilder
  4. {
  5. public:
  6.  virtual void prepareMonitor()=0;
  7.  virtual void prepareCpu()=0;
  8.  virtual void prepareDisk()=0;
  9.  PCBuilder *GetProduct(){return product;}
  10. private:
  11.  PCBuilder *product;
  12. };
  13. class CheapPCBuilder:public PCBuilder
  14. {
  15. public:
  16.  void prepareMonitor()
  17.  {cout<<"cheap"<<endl;}
  18.  void prepareCpu()
  19.  {}
  20.  void prepareDisk()
  21.  {}
  22. };
  23. class DearPCBuilder:public PCBuilder
  24. {
  25. public:
  26.  void prepareMonitor()
  27.  {cout<<"Dear"<<endl;}
  28.  void prepareCpu()
  29.  {}
  30.  void prepareDisk()
  31.  {}
  32. };
  33. class Director
  34. {
  35. public:
  36.  void construct(PCBuilder* builder)
  37.  {
  38.   builder->prepareMonitor(); //一般來說,程序員可以在此處傳入參數,本程序省略。
  39.   builder->prepareCpu();
  40.   builder->prepareDisk();
  41.  }
  42. };
  43. void main()
  44. {
  45.  Director* dir;
  46.  PCBuilder* pd=new DearPCBuilder();
  47.  dir->construct(pd); 
  48. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章