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); 
    }
     
  • 相关阅读:
    05-傅里叶变换的理解总结
    04-积分图与Boxfilter
    03-形态学操作(针对灰度图像)
    02-形态学操作(针对二值图像)
    01-形态学操作:腐蚀与膨胀、开运算与闭运算
    LINUX内核学习起步:学习开发环境搭建
    转载:查看linux系统版本是32位的还是64位的
    我的第一个内核模块
    LINUX内核学习起步:深入理解linux内核
    Java--Stream流操作
  • 原文地址:https://www.cnblogs.com/dorothychai/p/3420587.html
Copyright © 2011-2022 走看看