1.簡單工廠模式
物件的集中管理,是把物件放在工廠類當中,那麼如何避免工廠類重複new操作?
a.通過建構函式進行注入。
b.設定工廠類為singleton模式或者使用static方式。static更像api的集合,因為他不能被繼承,singleton更像物件導向。
客戶端呼叫:
operationfactory factory=new operationfactory();
ioperation oper= factory.createoperation("+");
//或列舉 operenum.a
oper.numa = 1;
oper.numb = 2;
double result = oper.getresult();
簡單工廠的乙個優
點:物件的new過程進行集中管理,通過介面或抽象,使得客戶端從依賴具體的物件,變成依賴介面和配置,通過不同的配置,生成不同的物件。保證了上層呼叫的穩定性。
簡單工廠的乙個缺點:客戶端對factory還是存在著依賴關係,而且如果新增乘法操作,那麼工廠類**必須修改(增加case判斷),這違背了開閉原則。
2.工廠方法模式
概念:使得乙個類的例項化,延遲到了子類。
簡單工廠的乙個擴充套件,增加了乙個抽象工廠,具體工廠。形成四個角色。把類的例項化延遲到子類,即把類的new()工作放在具體工廠實現。
客戶端呼叫:
ifactory factory=new addfactory();
ioperation operation=factory.createoperation(); //多型性:同乙個方法名稱,不同的表現形態
operation.numa = 1;
opertaion.numb = 2;
double result=operation.getresult();
工廠方法模式的乙個優
點: 此時如果增加乘法操作,只需要擴充套件增加mutiopertaion類和mutifactory工廠類即可,原來的產品類和工廠類體系保持穩定,這符合開閉原則和依賴倒置原則。
工廠方法模式的乙個缺點: 這裡的優點也是缺點,即工廠方法把原來的簡單工廠的內部邏輯判斷,轉移到了客戶端上面,原來是修改工廠類,現在是修改客戶端,如果客戶端有100個呢?同時增加類的過程,也是增加開發量的過程。
而且雖然物件的例項化延遲到了子類,但是依賴始終存在,只不過轉嫁到另乙個物件身上。為此工程中往往最後吧推不掉的依賴關係轉嫁到配置檔案上。這樣工廠方法模式往往被演繹成:「工廠方法+依賴注入+配置檔案訪問」。
簡單工廠vs工廠方法
工廠方法客服了簡單工廠的違背開閉原則的缺點,又保持了集中封裝物件的建立過程的優點;同時使用多型性,保持了簡單工廠的優點,克服了他的缺點。
簡單工廠模式 工廠方法模式
在實際應用中,我們可以考慮使用封裝 繼承 多型把程式的耦合度降低。1.簡單工廠模式 例子 寫乙個計算器模擬程式 思路 將業務進行封裝,並且進行松耦合,即不同的運算類之間互相不影響,可考慮通過繼承乙個類或者實現乙個介面 類operation,定義計算的統一介面 package smplefactory...
簡單工廠模式 工廠方法模式 抽象工廠模式
簡單工廠模式 簡單工廠模式並不是23種設計模式中的,但是在實際的應用中卻經常使用。uml圖 簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用...
簡單工廠模式 工廠方法模式 抽象工廠模式
b 簡單工廠模式又稱靜態工廠模式 b 下面看 示例 public inte ce robot public class factory catch exception e return null public class test class robota implements robot clas...