大话设计模式--建造者模式 Builder -- C++实现实例
1. 建造者模式,將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離, 使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
用戶只需要指定需要建造的類型就可以得到他們,而具體建造的過程和細(xì)節(jié)就不需要知道了。
?
關(guān)鍵類Director,用它來控制建造過程,用它來隔離用戶與建造過程的關(guān)聯(lián)。
適用場(chǎng)合主要是用于創(chuàng)建一些復(fù)雜的對(duì)象, 這些對(duì)象內(nèi)部的構(gòu)建間的建造順序通常是穩(wěn)定的,但對(duì)象內(nèi)部的構(gòu)建通常面臨著復(fù)雜的變化。
在創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及他們的裝配方式適用的模式。
建造者模式的好處就是使得建造代碼與表示代碼分離,由于建造者隱藏了該產(chǎn)品是如何組裝的,所以若需要改變一個(gè)產(chǎn)品的內(nèi)部表示,只需要再定義一個(gè)具體的建造者就可以了。
?
實(shí)例骨架:
product.h product.cpp
#ifndef PRODUCT_H #define PRODUCT_H#include <iostream> #include <list> #include <string> using namespace std;class Product { public:Product();void addPart(string part);void show();private:list<string> *parts; };#endif // PRODUCT_H #include "product.h"Product::Product() {parts = new list<string>; }void Product::addPart(string part) {parts->push_back(part); }void Product::show() {for(list<string>::iterator i=parts->begin(); i!=parts->end(); i++)cout << "part: " << *i << endl; }?
builder.h builder.cpp
#ifndef BUILDER_H #define BUILDER_H#include "product.h"class Builder { public:Builder();void virtual builderPartA()=0;void virtual builderPartB()=0;virtual Product* getResult()=0; };#endif // BUILDER_H #include "builder.h"Builder::Builder() { }?
concretebuilder1.h concretebuilder1.cpp
#ifndef CONCRETEBUILDER1_H #define CONCRETEBUILDER1_H#include "builder.h"class ConcreteBuilder1 : public Builder { public:ConcreteBuilder1();~ConcreteBuilder1();void builderPartA();void builderPartB();Product* getResult();private:Product *product; };#endif // CONCRETEBUILDER1_H #include "concretebuilder1.h"ConcreteBuilder1::ConcreteBuilder1() {product = new Product(); }ConcreteBuilder1::~ConcreteBuilder1() {delete product; }void ConcreteBuilder1::builderPartA() {product->addPart("ConcreteBuilder1 A"); }void ConcreteBuilder1::builderPartB() {product->addPart("ConcreteBuilder1 B"); }Product* ConcreteBuilder1::getResult() {return product; }
concretebuilder2.h concretebuilder2.cpp
director.h director.cpp
main.cpp
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xj626852095/p/3648192.html
總結(jié)
以上是生活随笔為你收集整理的大话设计模式--建造者模式 Builder -- C++实现实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 调用ArcGIS server a
- 下一篇: 业务系统实现记住密码和自动登录功能