zoukankan      html  css  js  c++  java
  • [转]C++设计模式:Builder模式

    Builder模式要解决的问题是,当我们要创建很复杂的对象时,有时候需要将复杂对象的创建过程和这个对象的表示分离开来。由于在每一步的构造过程中可以映入不同参数,所以步骤相同但是最后的对象却不一样。也就是说将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
     
        Builder模式的关键在于在创建一个复杂对象时,其组合过程往往涉及复杂的处理,同时,这种职责的分离使得修改复杂对象的组合逻辑变得独立而简单。
     
    以下为实现代码:实现的比较简单:
     
     
    #include
    #include
    using namespace std;
     
    class PCBuilder
    {
    public:
     virtual void prepareMonitor()=0;
     virtual void prepareCpu()=0;
     virtual void prepareDisk()=0;
     PCBuilder *GetProduct(){return product;}
    private:
     PCBuilder *product;
    };
     
    class CheapPCBuilder:public PCBuilder
    {
    public:
     void prepareMonitor()
     {cout<<"cheap"<<endl;}
     void prepareCpu()
     {}
     void prepareDisk()
     {}
    };
     
    class DearPCBuilder:public PCBuilder
    {
    public:
     void prepareMonitor()
     {cout<<"Dear"<<endl;}
     void prepareCpu()
     {}
     void prepareDisk()
     {}
    };
     
    class Director
    {
    public:
     void construct(PCBuilder* builder)
     {
      builder->prepareMonitor();  //一般来说,客户程序员可以在此处传入参数,本程序省略。
      builder->prepareCpu();
      builder->prepareDisk();
     }
    };
    void main()
    {
     Director* dir;
     PCBuilder* pd=new DearPCBuilder();
     dir->construct(pd); 
    }
     
  • 相关阅读:
    while循环
    No.四
    No. three
    第二章吧
    第二次写博客
    我人生的第一个程序,相当于哥伦布发现新大路。
    orale命令6 rman备份
    oracle 命令4 热备份
    oracle命令3 冷备份
    oracle命令2 和一致性关闭、非一致性关闭
  • 原文地址:https://www.cnblogs.com/dorothychai/p/3420587.html
Copyright © 2011-2022 走看看