1. 程式人生 > >設計模式-建造者模式-C++實現

設計模式-建造者模式-C++實現

建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的建立過程可以建立不同的表示。

場景:
1.當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。
2.當構造過程必須允許被建立的物件有不同的表示時。

#include <stdio.h>
#include <string>
#include <vector>

class CarBuilder {
public:
	virtual void builderColor() {

	}

	virtual void builderCarBody() {

	}

	virtual void builderWheel() {

	}

	virtual void buildCarLabel() {

	}
};

class BMWBuilder : public CarBuilder {
public:
	virtual void builderColor()override {
		printf("建立寶馬車顏色:紅色\n");
	}

	virtual void builderCarBody()override {
		printf("建立寶馬車車體\n");
	}

	virtual void builderWheel() override {
		printf("建立寶馬車輪子\n");
	}

	virtual void buildCarLabel()override {
		printf("建立寶馬車車標\n");
	}
};

class DasBuilder : public CarBuilder {
public:
	virtual void builderColor()override {
		printf("建立大眾車顏色:黑色\n");
	}

	virtual void builderCarBody()override {
		printf("建立大眾車車體\n");
	}

	virtual void builderWheel() override {
		printf("建立大眾車輪子\n");
	}

	virtual void buildCarLabel()override {
		printf("建立大眾車車標\n");
	}
};

class CarFactory {
public:
	void buildCar(CarBuilder* builder) {
		builder->builderCarBody();
		builder->builderColor();
		builder->builderWheel();
		builder->buildCarLabel();
	}
};

int main() {
	
	BMWBuilder* bmwBuilder = new BMWBuilder;
	DasBuilder* dasBuilder = new DasBuilder;

	CarFactory* carFactory = new CarFactory;
	carFactory->buildCar(bmwBuilder);
	carFactory->buildCar(dasBuilder);

	return 0;
}

執行結果:
在這裡插入圖片描述