工廠方法模式(factory pattern)是建立型設計模式之一。當需要生成複雜物件時,就可以使用工廠方法模式,一般是定義乙個用於建立物件的介面,讓子類決定例項化哪個類。此模式核心是封裝類中不變的部分,提取個性化經常變的部分為其子類,通過依賴注入達到解耦、復用和後期維護拓展。
其中包含四部分:抽象工廠類,具體工廠類,抽象產品類,具體產品類。
抽象工廠類:如圖中的 factory,是工廠方法模式的核心。
具體工廠類:如圖中的 factorya、factoryb,用來實現具體的生產邏輯。
抽象產品類:如圖中的 product,是工廠方法模式所建立的產品的父類
具體產品類:如圖中的 producta、productb,實現抽象產品的某個具體產品的物件
下面我們以乙個具體的例子來講解一下簡單實現工廠方法模式的步驟,比如有一家鳳凰牌自行車組裝商,有 a、b兩款自行車,乙個工廠裡面有兩條生產線來組裝兩種車:
public abstract class buildbike
public abstract class bike
//具體產品類 bikea
public class bikea extends bike
}//具體產品類 bikeb
public class bikeb extends bike
}
//具體工具類 buildbikea
public class buildbikea extends buildbike
}//具體工具類 buildbikeb
public class buildbikeb extends buildbike
}
接下來我們可以在 main() 方法中來組裝兩種自行車了:
public class main
}
結果:
那麼工廠方法模式有什麼優點呢?當你需要新增一些產品時,你只需要增加具體的產品類和相應的工廠子類,當公共介面很多,又有不同私有方法時,你完全不必新增乙個產品就去再寫一次所有的公共介面。降低**的耦合性,方便以後維護和拓展。
第一種是使用者知道對於某個產品應該使用哪個具體工具類,例項化工具類,生產產品。
第二種是使用者只需要某個產品,不知道也不管哪個具體工具類,交給生產方決策(決策過程對於使用者是透明的),根據情況例項化乙個具體的工具類交給使用者。
設計模式 工廠方法模式
一 工廠方法 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...