1.定義
工廠方法模式:定義乙個建立物件的介面,讓子類決定例項化哪乙個類,即使乙個類的例項化延遲到子類。
2.工廠方法模式的四個要素
抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。
具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。
具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。
3.實現
根據工廠方法模式的4個要素,我們可以這樣設計:
(1)定義乙個creator介面,所有的工廠方法類都需要繼承這個介面,宣告的方法是返回乙個iproduct形式的物件
inte***ce ifactory
(2)實現creator介面的具體工廠類,有多少個產品就有多少個這樣的工廠類,每個工廠類繼承creator介面,用於建立iproduct子類的例項
public class productonefactory:ifactory
}
public class producttwofactory:ifactory
}
(3)iproduct的介面,定義product的一些共有的方法
inte***ce iproduct
(4)具體產品類實現iproduct介面
public class productone:iproduct
}
public class producttwo:iproduct
}
(5)客戶端呼叫
ifactory factory = new productonecreate();
iproduct product = factory.productcreate();
product.show();
以上,基本完成了對工廠方法模式的實現,作為建立型模式,工廠方法模式遵循了「開放-封閉原則」,如果需要增加某一型別的產品,只需是其繼承該型別的iproduct介面和ifactory介面即可。工廠方法模式集中封裝了物件的建立,使得更換物件時,不需要做大的改動,降低了客戶程式與產品物件的耦合性。其缺點就是每增加乙個產品,就需要增加相應的產品類和工廠類,額外增加了開發量(我認為這是不可避免的)。
設計模式 工廠模式之工廠方法模式
工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...
設計模式之工廠方法模式
package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...
設計模式之工廠方法模式
在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...