C++设计模式-建造者模式
生活随笔
收集整理的這篇文章主要介紹了
C++设计模式-建造者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
?
基本概念
代碼與實例
?
基本概念
建造者模式(Builder):將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
建造者模式是在當創建復雜對象的算法應該獨立于該對象的組成部分以及它們裝配方式時適用的模式。
下面給出一個UML實例:
?
?
代碼與實例
程序運行截圖如下:
源碼如下:
Head.h
#include <string> using namespace std;typedef string Graphics; typedef string Pen;class PersonBuilder{public:virtual void buildHead(){}virtual void buildBody(){}virtual void buildArmLeft(){}virtual void buildArmRight(){}virtual void buildLegLeft(){}virtual void buildLegRight(){}PersonBuilder(Graphics g, Pen p);virtual ~PersonBuilder();private:Graphics *g;Pen *p; };class PersonThinBuilder : public PersonBuilder{public:PersonThinBuilder(Graphics g, Pen p);void buildHead();void buildBody();void buildArmLeft();void buildArmRight();void buildLegLeft();void buildLegRight(); };class PersonFatBuilder : public PersonBuilder{public:PersonFatBuilder(Graphics g, Pen p);void buildHead();void buildBody();void buildArmLeft();void buildArmRight();void buildLegLeft();void buildLegRight(); };class PersonDirector{public:PersonDirector(PersonBuilder *pb);void createPersion();private:PersonBuilder *pb; };Head.cpp
#include "Head.h" #include <iostream>PersonThinBuilder::PersonThinBuilder(Graphics g, Pen p):PersonBuilder(g, p) {}void PersonThinBuilder::buildHead() {cout << "瘦子 畫頭" << endl; }void PersonThinBuilder::buildBody() {cout << "瘦子 畫身體" << endl; }void PersonThinBuilder::buildArmLeft() {cout << "瘦子 畫左手" << endl; }void PersonThinBuilder::buildArmRight() {cout << "瘦子 畫右手" << endl; }void PersonThinBuilder::buildLegLeft() {cout << "瘦子 畫左腳" << endl; }void PersonThinBuilder::buildLegRight() {cout << "瘦子 畫右腳" << endl; }PersonBuilder::PersonBuilder(Graphics g, Pen p) {this->g = new Graphics(g);this->p = new Pen(p); }PersonBuilder::~PersonBuilder() {delete g;delete p; }PersonFatBuilder::PersonFatBuilder(Graphics g, Pen p):PersonBuilder(g, p) {}void PersonFatBuilder::buildHead() {cout << "胖子 畫頭" << endl; }void PersonFatBuilder::buildBody() {cout << "胖子 畫身體" << endl; }void PersonFatBuilder::buildArmLeft() {cout << "胖子 畫左手" << endl; }void PersonFatBuilder::buildArmRight() {cout << "胖子 畫右手" << endl; }void PersonFatBuilder::buildLegLeft() {cout << "胖子 畫左腳" << endl; }void PersonFatBuilder::buildLegRight() {cout << "胖子 畫右腳" << endl; }PersonDirector::PersonDirector(PersonBuilder *pb) {this->pb = pb; }void PersonDirector::createPersion() {pb->buildBody();pb->buildHead();pb->buildArmLeft();pb->buildArmRight();pb->buildLegLeft();pb->buildLegRight(); }main.cpp
#include "Head.h" #include <iostream> using namespace std;int main(int *argc, int *argv){PersonThinBuilder *pT = new PersonThinBuilder("畫瘦子", "紅筆");PersonDirector *pD = new PersonDirector(pT);pD->createPersion();delete pT;delete pD;cout << "------------ 華 麗 的 分 割 線 ------------" << endl;PersonFatBuilder *pF = new PersonFatBuilder("畫胖子", "黑筆");PersonDirector *pD2 = new PersonDirector(pF);pD2->createPersion();delete pF;delete pD2;getchar();return 0; }?
總結
以上是生活随笔為你收集整理的C++设计模式-建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring官方阅读笔记-@Contro
- 下一篇: Qt文档阅读笔记-继承QProgress