對于簡單工廠模式的補充:面向對象的編程,并不是類越多越好,類的劃分是為了封裝,但是分類的基礎是抽象,具有相同屬性和功能的對象的抽象集合才是類(摘抄)。舉個簡單的例子,用baidu和google去搜csdn,這時就沒有必要去創建兩個類,只需要創建一個類,穿一個頁面的地址進去就行,因為操作的方法是一樣的,都是搜索csdn,只是網址的差別。
### 策略模式
它定義了算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化,不會影響使用算法的客戶(摘抄)。
我感覺策略模式就是純封裝算法的模式,把要實現同一個目的,但是達到目的的方式不同。
還是用昨天的計算的例子來舉例算了,這樣可以比較簡單的看出來兩種模式的對比。
工廠模式是把加減乘除當成不同的概念,策略模式是把加減乘除當作不同的方法,它們都屬于計算這個概念。
~~~
//策略模式就要先生成一個策略類(抽象類)
public abstract class Operation
{
public abstract double oper(int a,int b);
}
public class Add extends Operation
{
@Override
public double oper(int a,int b)
{
//加法方法
}
}
......
//省略號后面分別實現減,乘,除
~~~
算法類都寫完之后,這時就要寫一個使用的類了
~~~
public class domethod
{
Operation op = null;
public select(String type)
{
switch (type) {
case "+":
op = new Add();
break;
......
}
}//與簡單工廠模式結合
public double result (double a,double b)
{
return op.oper(a,b);
}
}
~~~
在計算器調用操作類時
~~~
Domethod method = new Domethod();
method.select("+");
method.result(1,2);
~~~
這樣使用策略模式和簡單工廠模式的結合就只需要實例化一個類就可以了,而單純的簡單工廠模式需要實例化父類和工廠類
這個樣子,代碼的藕合度又降低了
### 總結
策略模式結合簡單工廠模式使用,可以使藕合度比單純的使用簡單工廠模式低!
策略模式的用處在于需要在不同的時候使用不同業務規則!(摘抄)
個人理解策略于簡單工廠模式的區別,簡單工廠模式分離的是對象,而策略模式分離的是規則(所以父類中沒有屬性),用同一個例子使用兩種模式,也代表了兩種不一樣的面向對象的理解,抽象的層次不一樣。
- 前言
- (1)代碼無錯就是優?——簡單工廠模式
- (2)商場促銷——策略模式
- (3)&(4)&(5) 設計模式原則
- (6)穿什么有這么重要?——裝飾模式
- (7)為別人做嫁衣——代理模式
- (8)雷鋒依然在人間——工廠方法模式
- (9)簡歷復印——原型模式
- (10)考題抄錯會做也白搭——模板方法模式
- (11)迪米特法則
- (12)牛市股票還會虧錢?—— 外觀模式
- (13)好菜每回味不同——建造者模式
- (14)老板回來,我不知道——觀察者模式
- java實現事件委托
- (15)就不能不還DB嗎?—— 抽象工廠模式
- (16)無盡加班何時休息——狀態模式
- (17)在NBA我需要翻譯——適配器模式
- (18)如果再回到從前——備忘錄模式
- (19)分公司=部門——組合設計模式
- (20)想走?可以!先買票——迭代器模式
- (21)有些類也需計劃生育——單例模式
- (22)手機軟件何時統一——橋接模式
- (23)烤羊肉串引來的思考——命令模式
- (24)加薪非要老總批?——職責鏈模式
- (25)世界需要和平——中介者模式
- (26)項目多也別傻做——享元模式
- (28)男人和女人——訪問者模式