工廠方法屬於建立型模式,提供了一種方法來建立物件。
意圖:定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。
主要解決:主要解決介面選擇的問題。
何時使用:我們明確地計畫不同條件下建立不同例項時。
如何解決:讓其子類實現工廠介面,返回的也是乙個抽象的產品。
關鍵**:建立過程在其子類執行。
1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了
2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。
3、遮蔽產品的具體實現,呼叫者只關心產品的介面。
每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。
使用反射來構造工廠
工廠方法中傳入待生產的類的類名,使用class.forname()方法來通過類名載入類。
在呼叫的時候,進行強制型別轉換。
我們將建立乙個 shape 介面和實現 shape 介面的實體類。下一步是定義工廠類 shapefactory。
factorypatterndemo,我們的演示類使用 shapefactory 來獲取 shape 物件。它將向 shapefactory 傳遞資訊(circle / rectangle / square),以便獲取它所需物件的型別。
使用反射機制可以解決每次增加乙個產品時,都需要增加乙個物件實現工廠的缺點
public
class shapefactory catch (classnotfoundexception e) catch (instantiationexception e) catch (illegalacces***ception e)
return obj;}}
使用的使用採用強制轉換
rectangle rect = (rectangle) shapefactory.getclass(rectangle.class);
rect.draw();
square square = (square) shapefactory.getclass(square.class);
square.draw();
這樣就只需要乙個物件實現工廠 設計模式 簡單工廠 工廠方法 抽象工廠方法模式
簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...
設計模式 工廠方法
設計模式 工廠方法 工廠方法與抽象方法 面向介面程式設計可以提高 的靈活性 可以橫向擴充 切忌不能使用面向實現的程式設計,這樣做不便於以後業務的擴充和 的靈活性。工廠方法 就是把 new class 的過程交給 factory來做.構造類的細節不需要我們知道。比如 構造乙個 list 我們可以這樣寫...
設計模式 工廠方法
簡單工廠針對擴充套件時需要修改 違反了ocp 開閉原則 而工廠方法模式在擴充套件時,更滿足ocp。當然比較簡單工廠模式,工廠方法模式有一組實現了相同介面的工廠類,而簡單工廠模式就只有乙個工廠類。和簡單工廠方法一樣,還是以生成汽車為例子。定義要生成的物件的公共介面 public inte ce car...