日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

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

發(fā)布時(shí)間:2025/3/15 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++设计模式-建造者模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

?

?

基本概念

代碼與實(shí)例


?

基本概念

建造者模式(Builder):將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

建造者模式是在當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們裝配方式時(shí)適用的模式。

下面給出一個(gè)UML實(shí)例:

?

?

代碼與實(shí)例

程序運(yùn)行截圖如下:

源碼如下:

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 << "瘦子 畫(huà)頭" << endl; }void PersonThinBuilder::buildBody() {cout << "瘦子 畫(huà)身體" << endl; }void PersonThinBuilder::buildArmLeft() {cout << "瘦子 畫(huà)左手" << endl; }void PersonThinBuilder::buildArmRight() {cout << "瘦子 畫(huà)右手" << endl; }void PersonThinBuilder::buildLegLeft() {cout << "瘦子 畫(huà)左腳" << endl; }void PersonThinBuilder::buildLegRight() {cout << "瘦子 畫(huà)右腳" << 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 << "胖子 畫(huà)頭" << endl; }void PersonFatBuilder::buildBody() {cout << "胖子 畫(huà)身體" << endl; }void PersonFatBuilder::buildArmLeft() {cout << "胖子 畫(huà)左手" << endl; }void PersonFatBuilder::buildArmRight() {cout << "胖子 畫(huà)右手" << endl; }void PersonFatBuilder::buildLegLeft() {cout << "胖子 畫(huà)左腳" << endl; }void PersonFatBuilder::buildLegRight() {cout << "胖子 畫(huà)右腳" << 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("畫(huà)瘦子", "紅筆");PersonDirector *pD = new PersonDirector(pT);pD->createPersion();delete pT;delete pD;cout << "------------ 華 麗 的 分 割 線 ------------" << endl;PersonFatBuilder *pF = new PersonFatBuilder("畫(huà)胖子", "黑筆");PersonDirector *pD2 = new PersonDirector(pF);pD2->createPersion();delete pF;delete pD2;getchar();return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的C++设计模式-建造者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。