拓展實現
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。
product(產品)
product
角色屬於框架一方,是乙個抽象類。
creator(建立者)
creator
角色屬於框架一方,負責生成product
角色的抽象類,但具體的處理則由子類角色決定。
concreteproduct(具體的產品)
concreteproduct
角色屬於具體加工這一方,它決定具體的產品。
concretecreator(具體的建立者)
concretecreator
角色屬於具體加工這一方,負責生成具體的產品。
生成例項的方法的三種實現:
方法為抽象方法
將建立物件的方法指定為抽象方法。
public
abstract
class
factory
方法為預設實現
該方法中product
不能為抽象類,子類如果重寫該方法,則會使用預設的建立方法。
public
class
factory
;}
方法中拋異常public
class
factory
;}
該方法需要定義乙個專門的異常,而且,如果子類沒有重寫該類,也不會報異常,直到執行。
/**
* 產品類,乙個抽象類
*/public
abstract
class
product
/*** 工廠抽象類,其中一些方法使用producted,是保證不可以被外部訪問。
*/public
abstract
class
factory
protected
abstract product createproduct
(string owner)
;protected
abstract
void
registproduct
(product product);}
/*** 具體的產品
*/public
class
idcard
extends
product
@override
public
void
use()}
/*** 生產具體的id卡片的工廠
*/public
class
idcardfactory
extends
factory
@override
protected
void
registproduct
(product product)
}public
class
factorymethodmain
}
執行後,會顯示:
製作張三的id卡
製作李四的id卡
使用張三的id卡
使用李四的id卡
模板方法和工廠方法的區別
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...
設計模式 工廠方法模式
框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...