定義
定義乙個用於建立物件的介面,讓子類決定具體例項化哪乙個類,把乙個類的例項化延遲到子類。
案例
現在有兩種男人:程式設計師和其他男人,為了延續下一代,每個男人都需要找尋乙個女人,但是每個男人都有每個男人的要求,有的要漂亮的,有的要有內涵的,有的要技術好的。這各種各樣的女人就像一些列的產品,從girl延伸出來的(gril not woman),比如thingril、fatgirl。程式設計師都喜歡**的gril,所以建立girl物件的時候都是new乙個thingril,而其他的男人都喜歡fatgirl,就得到如下類圖:
從上圖可以看出每乙個男人只能選擇乙個女人,因為這是受法律保護的。
從類圖不難得到一下**:
注意工廠方法有兩種不同的情況:class
man
class
programmer:public
man
}
class
otherman
:public
man
}
man
*man
=new
programmer
();
girl
*girl
=man
->
creategrilfriend
();
類man是乙個抽象類,不提供工廠方法的實現。
類man提供工廠方法的實現。
而且建立產品物件的時候還可以提供引數的形式來例項化物件:
從**裡可以看出其他的男人都有自己的路要走,不接受建議。class
man
}
class
otherman:public
man
}
man
*man
=new
programmer
();
girl
*girl
=man
->
creategrilfriend
();
工廠方法還可以通過模版方法來避免建立子類:
適用性相關模式工廠方法模式:乙個抽象工廠類派生多個具體工廠類,乙個抽象產品類派生多個具體產品類。每個男人乙個女人(一夫一妻)。class
man
template
<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...