zoukankan      html  css  js  c++  java
  • 一.创建型模式 Builder

    • Builder 模式的关键是其中的 Director 对象并不直接返回对象,而是通过一步步(BuildPartA,BuildPartB,BuildPartC)来一步步进行对象的创建。
    • 复杂对象的创建过程和这个对象的表示分离开来

    #include<iostream>
    using namespace std;
    class Builder {
    public:
        virtual void selectCpu() = 0;
        virtual void selectDisk() = 0;
        virtual void selectMem() = 0;
    };
    
    class pcBuilder:public Builder
    {
    public:
        virtual void selectCpu() { cout << "cpu" << endl; }
        virtual void selectDisk() { cout << "Disk" << endl; }
        virtual void selectMem() { cout << "Men" << endl; }
    
    };
    
    class noteBookBuilder :public Builder
    {
    public:
        virtual void selectCpu() { cout << "Nodecpu" << endl; }
        virtual void selectDisk() { cout << "NodeDisk" << endl; }
        virtual void selectMem() { cout << "NodeMen" << endl; }
    
    };
    class Director {
    
    private:
        Builder* _builder;
    public:
        Director(Builder* builder)
        {
            _builder = builder;
        }
        void create() {
            _builder->selectCpu();
            _builder->selectDisk();
            _builder->selectMem();
        }
    };
    
    int main() {
        noteBookBuilder note;
        Director dir(&note);
        dir.create();
        system("pause");
        return 0;
    }
    • Builder 模式和 AbstractFactory 模式在功能上很相似,因为都是用来创建大的复杂的对象,
    • 它们的区别是:Builder 模式强调的是一步步创建对象,并通过相同的创建过程可以获
    • 得不同的结果对象,一般来说 Builder 模式中对象不是直接返回的。而在 AbstractFactory 模
    • 式中对象是直接返回的,AbstractFactory 模式强调的是为创建多个相互依赖的对象提供一个
    • 同一的接口。
  • 相关阅读:
    在Myeclipse中配置tomcat
    tomcat用startup.bat启动时,界面一闪消失
    单向链表的基本操作
    简单排序的对比
    关于string的排序 选择插入排序
    insertsort
    selectsort
    理解函数式编程
    vue中使用$nextTick后任然无法正确计算出元素高度
    使用vuex+vue-i18n方式国际化
  • 原文地址:https://www.cnblogs.com/jingchu/p/10024972.html
Copyright © 2011-2022 走看看