美文网首页
19.C++设计模式-建造者模式

19.C++设计模式-建造者模式

作者: 任振铭 | 来源:发表于2019-09-22 09:51 被阅读0次
图片.png
#include <iostream>
using namespace std;

class House {
private:
    string m_door;
    string m_wall;
    string m_window;
public:
    void setDoor(string door) {
        this->m_door = door;
    }
    void setWall(string wall) {
        this->m_wall = wall;
    }
    void setWindow(string window) {
        this->m_window = window;
    }

    string getDoor() {
        cout<<m_door<<endl;
        return m_door;
    }
    string getWall() {
        cout<<m_wall<<endl;
        return m_wall;
    }
    string getWindow() {
        cout << m_window << endl;
        return m_window;
    }
};

class Builder {
public:
    virtual void buildWall() = 0;
    virtual void buildDoor() = 0;
    virtual void buildWindow() = 0;
    virtual House* getHouse() = 0;
};

class FlatBuilder :public Builder{
public:
    House* house;
    FlatBuilder(House* house) {
        this->house = house;
    }
    virtual void buildWall() {
        house->setWall("flat wall");
    }
    virtual void buildDoor() {
        house->setDoor("flat door");
    }

    virtual void buildWindow() {
        house->setWindow("flat window");
    }
    virtual House* getHouse() {
        return house;
    }
};

class NiceBuilder :public Builder {
public:
    House* house;
    NiceBuilder(House* house) {
        this->house = house;
    }
    virtual void buildWall() {
        house->setWall("nice wall");
    }
    virtual void buildDoor() {
        house->setDoor("nice door");
    }

    virtual void buildWindow() {
        house->setWindow("nice window");
    }
    virtual House* getHouse() {
        return house;
    }
};

class Director {
public:
    Builder* builder;
    Director(Builder* builder) {
        this->builder = builder;
    }
    House* construct() {
        builder->buildDoor();
        builder->buildWall();
        builder->buildWindow();
        return builder->getHouse();
    }
};

void main() {
    House* house;
    Builder* builder;
    Director* director;

    house = new House;
    builder = new FlatBuilder(house);
    director = new Director(builder);
    house = director->construct();
    house->getDoor();
    house->getWall();
    house->getWindow();

    delete director;
    delete builder;
    delete house;

    house = new House;
    builder = new NiceBuilder(house);
    director = new Director(builder);
    house = director->construct();
    house->getDoor();
    house->getWall();
    house->getWindow();
    delete director;
    delete builder;
    delete house;

    system("pause");
}

相关文章

  • 19.C++设计模式-建造者模式

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式

    Java 设计模式情景分析 ——单例模式 Java 设计模式情景分析——建造者模式 Java 设计模式情景分析——...

网友评论

      本文标题:19.C++设计模式-建造者模式

      本文链接:https://www.haomeiwen.com/subject/qrmyuctx.html