在原博主的文章中似乎與我學習的工廠模式有點出入。原博主的文章中所寫的工廠方法模式和抽象工廠模式實際上對應的都是工廠模式,而抽象工廠模式實際上是為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類,這將在下一博文具體講解。
工廠模式分為簡單工廠模式和工廠方法模式。
簡單工廠模式
就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。看下圖
舉例如下:(我們舉乙個傳送郵件和簡訊的例子)
首先,建立二者的共同介面:
public inte***ce sender
其次,建立實現類:
public class mailsender implements sender
}
public class smssender implements sender
}
最後,建工廠類:
public class sendfactory else if ("sms".equals(type)) else
}}
我們來測試下:
public class factorytest
}
輸出:this is sms sender!
上面的例子是在工廠類中建乙個方法,根據傳入引數的不同返回不同的例項,還有另一種做法,是在工廠類中建立不同的方法用於建立不同的例項,具體如下:
public class sendfactory
public sender producesms()
}
工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題。這時就需要用到工廠方法模式。建立乙個抽象的工廠類(或介面),建立多個工廠類來繼承這個抽象類,這樣一來,當需要增加新的產品時就不必修改原來的工廠類,只需新建乙個對應工廠類繼承原有介面即可。類圖如下:
例子很簡單,就不詳細列出。工廠方法模式是簡單工廠模式的進一步抽象和推廣,遵循了開閉原則,利於程式的拓展,缺點就在於每新增乙個產品就要新建乙個類,增加了開發量。
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...