大话设计模式--建造者模式 Builder -- C++实现实例
生活随笔
收集整理的這篇文章主要介紹了
大话设计模式--建造者模式 Builder -- C++实现实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 建造者模式,將一個復雜對象的構建與它的表示分離, 使得同樣的構建過程可以創(chuàng)建不同的表示。
用戶只需要指定需要建造的類型就可以得到他們,而具體建造的過程和細節(jié)就不需要知道了。
?
關鍵類Director,用它來控制建造過程,用它來隔離用戶與建造過程的關聯(lián)。
適用場合主要是用于創(chuàng)建一些復雜的對象, 這些對象內部的構建間的建造順序通常是穩(wěn)定的,但對象內部的構建通常面臨著復雜的變化。
在創(chuàng)建復雜對象的算法應該獨立于該對象的組成部分以及他們的裝配方式適用的模式。
建造者模式的好處就是使得建造代碼與表示代碼分離,由于建造者隱藏了該產品是如何組裝的,所以若需要改變一個產品的內部表示,只需要再定義一個具體的建造者就可以了。
?
實例骨架:
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
?
?
?
?
?
轉載于:https://www.cnblogs.com/xj626852095/p/3648192.html
總結
以上是生活随笔為你收集整理的大话设计模式--建造者模式 Builder -- C++实现实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 调用ArcGIS server a
- 下一篇: 业务系统实现记住密码和自动登录功能