動機
建立乙個物件往往需要複雜的過程,所以不適合包含在乙個復合工廠中,當有新的產品時,需要修改這個復合的工廠,不利於擴充套件。
而且,有些物件的建立可以需要用到復合工廠訪問不到的資訊,所以,定義乙個工廠介面,通過實現這個介面來決定例項化那個產品,這就是工廠方法模式,讓類的例項化推遲到子類中進行。
目的
1. 定義乙個介面,讓子類決定例項化哪個產品。
2. 通過通用介面建立物件。
實現
1. 產品介面和具體產品很好理解。
2. 工廠類提供乙個工廠方法,返回乙個產品物件。但是這個工廠方法是抽象的。
3. 具體工廠類實現工廠方法,完成具體產品的建立。
//幾個button類
class button
class winbutton extends button
class macbutton extends button
//它們的工廠類
inte***ce buttonfactory
class winbuttonfactory implements buttonfactory
}class macbuttonfactory implements buttonfactory
}
適用場景
1. 建立物件時有比較多重複的**時,可以考慮使用工廠方法模式執行這些重複的部分。
2. 建立物件需要訪問某些資訊,而這些資訊不應該包含在工廠類,那麼可以讓子類來實現物件的建立。
3. 需要集中管理物件的建立,保持程式的一致性時。
參考:
設計模式 建立型 工廠方法模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 工廠方法 factory method 模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立...
建立型設計模式 工廠方法模式
工廠方法模式解決的是,不像簡單工廠似的,要增加產品必須改工廠類的 實現思路是,1.抽象工廠類 2.抽象產品類 3.具體工廠類 繼承抽象工廠類 4.具體產品類 繼承抽象產品類 5.外界呼叫。1.抽象工廠類 建立抽象工廠類 abstract class factory2.抽象產品類 建立抽象產品類 ab...
設計模式 建立型 工廠方法模式 多個工廠方法模式
多個工廠方法模式,屬於工廠方法模式中的一種。它是一種建立型模式。是對普通簡單工廠模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件.public class gunfactory public igun getgunm4a1 ...