直接上**:
簡單工廠模式:
------------------------------乙個抽象類 --------------------------
abstract classabsclass
------------------------------2個實現類 --------------------------
//繼承自抽象類
class a:absclass
}//繼承自抽象類
class b:absclass
}------------------------------簡單工廠類 --------------------------
//現金收取工廠
class cashfactory
return cs;}}
客戶端呼叫:
/利用簡單工廠模式根據下拉選擇框,生成相應的物件
absclass csuper =cashfactory.createcashaccept("a");// 通過傳入type 就可以得到具體的實現類,就好比:你去機場,你直接跟你秘書說,我們開車去機場,這個時候你秘書開車載我去,你負責坐車到機場就可以了。
absclass csuper=cashfactory.createcashaccept("b"); //或者 秘書去叫計程車 我們打車去
------------------------------策略模式: --------------------------
前面的類沒有任何變化,只是把factory變成了casecontext策略類
//策略context
class cashcontext
//得到現金**計算結果(利用了多型機制,不同的策略行為導致不同的結果)
public double getresult(double money)
}客戶端呼叫:
absclass cc = null;
switch (cbxtype.selecteditem.tostring())
最後概括總結一下:
策略模式和簡單工廠模式看起來非常相似,都是通過多型來實現不同子類的選取,這種思想應該是從程式的整體來看得出的。如果從使用這兩種模式的角度來看的話,我們會發現在簡單工廠模式中我們只需要傳遞相應的條件就能得到想要的乙個物件(告訴別人我要幹嘛、別人去做),然後通過這個物件實現演算法的操作。而策略模式,使用時必須首先建立乙個想使用的類物件(自己去 做),然後將該物件最為引數傳遞進去,通過該物件呼叫不同的演算法。在簡單工廠模式中實現了通過條件選取乙個類去例項化物件,策略模式則將選取相應物件的工作交給模式的使用者,它本身不去做選取工作。
結合上面的**和下面的釋義不難看出,其實兩個的差別很微妙,factory是直接建立具體的物件並用該物件去執行相應的動作,而context將這個操作給了context類,沒有建立具體的物件,實現的**的進一步封裝,客戶端**並不需要知道具體的實現過程。
當然用的最多的還是兩者的結合使用
------------------------------策略模式和簡單工廠模式: --------------------------
前面的類沒有任何變化,只是把factory變成了casecontext策略類
//策略context
class cashcontext
}//得到現金**計算結果(利用了多型機制,不同的策略行為導致不同的結果)
public double getresult(double money)
}客戶端呼叫:
cashcontext context=
cashcontext("a");
double a=context.getresult(double money);
總結:簡單工廠模式:只需要發出命令,由他人去實現,策略模式:不僅僅要發出命令,還得由自己親自去做。
簡單工廠模式和策略模式的區別
最近一直在抽時間研究設計模式,之前對設計模式也有一定的了解,但是都沒有平心靜氣的去研究過,只是了解了一些皮毛,最近打算再深入研究一下,重新開啟了設計模式的資料,對之前的疑問乙個個的刨根問底,今天看了簡單工廠模式和策略模式看的人有點小暈,兩個的大概思路沒有怎麼變,都是通過多型去減少 的耦合度,怎麼看兩...
簡單工廠模式和策略模式的區別
而下面是我的理解 按一般教程中出現的例子理解 簡單工廠模式 客戶端傳乙個條件進工廠類,工廠類根據條件建立相應的產品類物件,並return給客戶端,供客戶端使用。即客戶端使用的是工廠類生產的產品物件。策略模式 客戶端建立乙個context類物件a 可以看作是工廠模式中工廠類 建立乙個策略物件並傳參給物...
簡單工廠模式和策略模式的區別
按一般教程中出現的例子理解 簡單工廠模式 客戶端傳乙個條件進工廠類,工廠類根據條件建立相應的產品類物件,並return給客戶端,供客戶端使用。即客戶端使用的是工廠類生產的產品物件。策略模式 客戶端建立乙個context類物件a 可以看作是工廠模式中工廠類 建立乙個策略物件並傳參給物件a,然後客戶端使...