Factory Method 工廠方法模式

2021-06-22 14:41:05 字數 1983 閱讀 3417

定義

定義乙個用於建立物件的介面,讓子類決定具體例項化哪乙個類,把乙個類的例項化延遲到子類。

案例

現在有兩種男人:程式設計師和其他男人,為了延續下一代,每個男人都需要找尋乙個女人,但是每個男人都有每個男人的要求,有的要漂亮的,有的要有內涵的,有的要技術好的。這各種各樣的女人就像一些列的產品,從girl延伸出來的(gril not woman),比如thingril、fatgirl。程式設計師都喜歡**的gril,所以建立girl物件的時候都是new乙個thingril,而其他的男人都喜歡fatgirl,就得到如下類圖:

從上圖可以看出每乙個男人只能選擇乙個女人,因為這是受法律保護的。

從類圖不難得到一下**:

class

manclassprogrammer

:public

man}

class

otherman

:public

man}

man

*man

=new

programmer

();girl

*girl

=man

->

creategrilfriend

();

注意工廠方法有兩種不同的情況:

類man是乙個抽象類,不提供工廠方法的實現。

類man提供工廠方法的實現。

而且建立產品物件的時候還可以提供引數的形式來例項化物件:

class

man}classotherman

:public

man}

man

*man

=new

programmer

();girl

*girl

=man

->

creategrilfriend

();

從**裡可以看出其他的男人都有自己的路要走,不接受建議。

工廠方法還可以通過模版方法來避免建立子類:

class

mantemplate<

typename

thegirl

>

class

otherman

:public

man}

man

*man

=new

normalman

<

beautifulgirl

>();

girl

*girl

=man

->

creategrilfriend

();

適用性相關模式工廠方法模式:乙個抽象工廠類派生多個具體工廠類,乙個抽象產品類派生多個具體產品類。每個男人乙個女人(一夫一妻)。

抽象工廠模式:乙個抽象工廠類派生多個具體工廠類。多個抽象產品類派生多個具體產品類。每個男人多個女人(多妻制)。

工廠模式(Factory Method

意圖 工廠方法模式 factory method pattern 工廠方法模式又稱為 工廠模式 也叫虛擬構造器 virtual constructor 模式或者 多型模式 屬於類的建立型模式。在工廠方法模式中,父類負責定義建立物件 的公共介面,而子類則負責生成具體的物件,這樣做的目的是將類的例項化操...

Factory Method(工廠模式)

定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。將產品的 實現 從 使用 中解耦 1.當乙個類不知道它所必須建立的物件的類的時候 2.當乙個類希望由它的子類來指定它所建立的物件的時候 3.當想將建立物件的職責委託給多個幫助子類中的某乙個,並且希望將哪乙個幫...

工廠方法(Factory Method)

為建立的物件定義乙個抽象類,雖然該抽象類負責建立物件,但由它的實現類決定哪個類需要例項化。即不在由單個工廠類決定應該例項化哪個子類。工廠類會將這決定推遲到每個子類中完成。product page 定義乙個由工廠方法例項化的物件介面。concreteproduct skillspage,educati...