1 2簡單工廠模式,工廠方法模式

2022-01-10 22:31:06 字數 1650 閱讀 2896

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...