C++ 工廠方法模式解析

C++ 工廠方法模式解析

工廠方法模式原則

  • 讓子類決定該建立的對象是什麼,來達到將對象建立的過程。封裝了對象建立的過程。實現了封裝的目的。主要就是建立者類和產品類,讓建立者自動綁定產品。

工廠方法模式實例

簡單的一個例子是,以生產鞋子爲例,廠商有莆田廠,阿迪廠,耐克廠。因此咱們只要告訴別人,咱們的鞋子廠商,就能夠知道他們生產出來的鞋子是怎麼樣的。c++

就是隻要只要場地 具體要造啥封裝起來。ui

頭文件:spa

#include "stdafx.h"

//產品基類
class Shoes {
public:
	virtual void shoestype() = 0; //返回鞋子類型
};

//Nike
class NikeShoes:public Shoes
{
public:
	void shoestype();
};

//Adi
class AdiShoes:public Shoes
{
public:
	void shoestype();
};

//putian
class PutianShoes:public Shoes
{
public:
	void shoestype();
};

//工廠基類
class Factory {
public:
	virtual Shoes* produceShoes() = 0; //生產鞋子 
};

//Nike
class NikeFactory:public Factory
{
public:
	Shoes* produceShoes();
};

//Adi
class AdiFactory:public Factory
{
public:
	Shoes* produceShoes();
};

//Putian
class PutianFactory:public Factory
{
public:
	Shoes* produceShoes();
};




複製代碼

實現:code

// FactoryMethod.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include "FactoryMethod.h"

using namespace std;

//實現
void NikeShoes::shoestype()
{
	cout << "這邊是隻生產Nike鞋子" << endl;
	return;
}

void AdiShoes::shoestype()
{
	cout << "這邊是隻生產阿迪鞋子" << endl;
	return;
}

void PutianShoes::shoestype()
{
	cout << "這邊是隻生產莆田鞋子" << endl;
	return;
}

Shoes * NikeFactory::produceShoes()
{
	return new NikeShoes();
}

Shoes * AdiFactory::produceShoes()
{
	return new NikeShoes();
}

Shoes * PutianFactory::produceShoes()
{
	return new NikeShoes();
}


int _tmain(int argc, _TCHAR* argv[])
{
	Factory * cur_factory = new NikeFactory();
	Shoes * cur_shoes = cur_factory->produceShoes();
	cur_shoes->shoestype();
	int mm ;
	cin>> mm; 
	return 0;
}


複製代碼

運行結果:cdn

工廠方法模式理解

我我的認爲,工廠方法模式,最主要的做用 就是封裝了實現的過程。讓子類去決定 實例化哪一個類,必須具備建立者和生產者兩個類。沒有的話用工廠方法模式就不適用了。對象

相關文章
相關標籤/搜索