設計模式 建立型別 工廠方法

2021-07-16 02:20:45 字數 1959 閱讀 1777

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 ...