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); 
    }
     
  • 相关阅读:
    Delphi String的散漫记录,真是知识无数,陷阱无数(转)
    GB2312 编码
    Windows系统字体与文件对照表
    Windows字符集的统一与转换
    Delphi 的绘图功能[10]
    各种字符集和编码详解
    NTC热敏电阻参数
    Spring Cloud 学习笔记(一)——入门、特征、配置
    上坡路定点停车与坡道起步
    网闸结构和工作原理
  • 原文地址:https://www.cnblogs.com/dorothychai/p/3420587.html
Copyright © 2011-2022 走看看