定義了一個建立對象的接口, 但由子類決定要執行個體化的類是哪一個. 工廠方法讓類把執行個體化推遲到子類
1、抽象工廠角色:這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實作的接口或者必須繼承的父類。
2、具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程式調用以建立對應的具體産品的對象。
3、抽象産品角色:它是具體産品繼承的父類或者是實作的接口。
4、具體産品角色:具體工廠角色所建立的對象就是此角色的執行個體。
類不知道自己要建立哪一個對象時
類用它的子類來指定建立哪個對象
當類将建立對象的職責委托給多個幫助子類中的某一個,并且你希望将哪一個幫助子類是代理者這一資訊局部化的時候
優點:
基于工廠角色和産品角色的多态性設計是工廠方法模式的關鍵。它能夠使工廠可以自主确定建立何種産品對象。而且如何建立一個具體産品的細節完全封裝在具體工廠内部,符合高内聚,低耦合。
在系統中加入新産品時,無需修改抽象工廠和抽象産品提供的接口,無需修改用戶端,也無需修改其他的具體工廠和具體産品,很好的利用了封裝和委托。
缺點:
在添加新産品時,需要編寫新的具體産品類(其實這不算一個缺點,因為這是不可避免的),要增加與之對應的具體工廠類。
參考:
http://www.cnblogs.com/yinxiangpei/articles/2366092.html
http://www.cnblogs.com/ywqu/archive/2010/01/07/1640855.html
http://www.cnblogs.com/Terrylee/archive/2006/01/04/310716.html