設計模式 工廠方法模式

2021-09-21 17:59:27 字數 1838 閱讀 6971

拓展實現

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

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