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 模式强调的是为创建多个相互依赖的对象提供一个
    • 同一的接口。
  • 相关阅读:
    抽象类和接口
    truncate,delete和drop的区别
    PLSQL乱码问题
    Linux
    myEclipse闪退
    Java 中 Synchronized 的使用
    工厂模式
    Java中的File,IO流
    jQuery的学习
    C++中的标准模板库STL
  • 原文地址:https://www.cnblogs.com/jingchu/p/10024972.html
Copyright © 2011-2022 走看看