1、意圖
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。
2、適用性
在下列情況下可以使用factory method模式:
1)當乙個類不知道它所必須建立的物件的類的時候。
2)當乙個類希望由它的子類來指定它所建立的物件的時候。
3)當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。
3、c++例項
// test.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include #include #include using namespace std;
enum direction
;class mapsite
;class room: public mapsite
mapsite* getside( direction d ) const
void setside( direction d, mapsite *m )
virtual void enter()
private:
mapsite *_sides[4];
int _roomnumber;
};class roomwithabomb:public room
mapsite* getside( direction d ) const
void setside( direction d, mapsite *m )
virtual void enter()
// ......bomb
private:
mapsite *_sides[4];
int _roomnumber;
// bomb
};class wall: public mapsite
virtual void enter() };
class bombedwall: public wall
virtual void enter()
// ......bomb
};class door:public mapsite
virtual void enter()
room* othersidefrom( room *r )
private:
room* _room1;
room* _room2;
bool _isopen;
};class maze
void addroom( room *r )
room* roomno( int no ) const
private:
room *_room;
};class mazegame
virtual maze* makemaze( ) const
virtual room* makeroom( int n ) const
virtual wall* makewall( ) const
virtual door* makedoor( room *r1, room *r2 ) const
maze* createmaze( ) };
class bombedmazegame: public mazegame
virtual wall* makewall( ) const
virtual room* makeroom( int n ) const };
class enchantedmazegame: public mazegame
virtual wall* makewall( ) const
virtual room* makeroom( int n ) const };
int _tmain(int argc, _tchar* argv)
設計模式 建立型 工廠方法模式 多個工廠方法模式
多個工廠方法模式,屬於工廠方法模式中的一種。它是一種建立型模式。是對普通簡單工廠模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件.public class gunfactory public igun getgunm4a1 ...
設計模式 建立型 工廠方法模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 工廠方法 factory method 模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立...
建立型模式 工廠方法設計模式
主要分為四個角色 1 工廠角色 負責建立具體產品 2 父類產品 作為所有產品的父類,用抽象類表示 3 子類產品 具體的產品 4 客戶程式 使用工廠和產品的程式 父類產品 服裝類 public abstract class clothes 子類產品1 褲子 public class trousers ...