簡單的一個例子是,以生產鞋子爲例,廠商有莆田廠,阿迪廠,耐克廠。因此咱們只要告訴別人,咱們的鞋子廠商,就能夠知道他們生產出來的鞋子是怎麼樣的。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
我我的認爲,工廠方法模式,最主要的做用 就是封裝了實現的過程。讓子類去決定 實例化哪一個類,必須具備建立者和生產者兩個類。沒有的話用工廠方法模式就不適用了。對象