1. 程式人生 > >設計模式-抽象工廠-C++實現

設計模式-抽象工廠-C++實現

抽象工廠:提供一個建立物件的介面,讓建立的建立延遲到具體的工廠類中。

場景:
1.一個系統要獨立於它的產品的建立、組合和表示時;
2.提供一個產品類庫,只想顯示他們的介面而不是實現時;
3.強調一系列相關的產品物件的設計以便於進行聯合使用時。

#include <stdio.h>

//產品基類-汽車
class Car {
public:
	virtual void carInfor() = 0;
};

class BMWCar :public Car {
public:
	void carInfor() {
		printf("這是一輛寶馬車!\n");
	}
};

class DaziCar :public Car {
public:
	void carInfor() {
		printf("這是一輛大眾車!\n");
	}
};

//工廠基類-汽車工廠
class CarFactory {
public:
	virtual Car *createCar() {
		return nullptr;
	}
};

class BMWFactory :public CarFactory {
public:
	Car* createCar() {
		return new BMWCar;
	}
};

class DaziFactory :public CarFactory {
public:
	Car* createCar() {
		return new DaziCar;
	}
};

int main() {

	BMWFactory* bmwFactory = new BMWFactory;
	Car* bmw = bmwFactory->createCar();
	bmw->carInfor();

	DaziFactory* daziFactory = new DaziFactory;
	Car* dazi = daziFactory->createCar();
	dazi->carInfor();

	return 0;
}

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