使用策略模式可以代替多重if-else
和switch
語句,讓**維護變得更加簡單,乍一看跟工廠模式一模一樣,下面是個簡單的例子。策略模式包含以下三種角色:
抽象策略角色:定義策略介面
public inte***ce weather
具體策略角色:實現策略介面
/**
* @author jhz
* @date 18-10-31 下午8:18
*/public class sunny implements weather
}
/**
* @author jhz
* @date 18-10-31 下午8:17
*/public class rainy implements weather
}
/**
* @author jhz
* @date 18-10-31 下午8:19
*/public class snowly implements weather
}
環境角色:持有策略物件
/**
* @author jhz
* @date 18-10-31 下午8:20
*/public class action
public void doaction()
}
客戶類
/**
* @author jhz
* @date 18-10-31 下午8:24
對比一下工廠模式的uml:(盜圖)
從uml看也差不多,環境類可以充當乙個策略工廠,它們真正的不同如下:
1、用途:工廠是建立型模式,策略是行為型模式。(差點把劉偉老師上課教的給忘了,前者是為了建立物件,後者是為了選擇行為。
2、關注點不同,前者關注物件建立,後者關注行為封裝。
3、工廠相當於黑盒,策略相當於白盒。
學習設計模式 策略模式
以下絕大部分內容 大話設計模式 c 定義演算法家族,分別封裝起來,讓它們之間可以互相替換,讓演算法變化,不會影響到使用者 good 適合類中的成員以方法為主,演算法經常變動 簡化了單元測試 因為每個演算法都有自己的類,可以通過自己的介面單獨測試。策略模式和簡單工廠基本相同,但簡單工模式只能解決物件建...
設計模式學習 策略模式
看完了策略模式的講解,然後將之於之前的簡單工廠模式對比了一下,策略模式就是將具體的演算法變化封裝了一下,可以將兩者結合一起使用,這樣的話封裝度會更加高一點,而且在更改演算法和新增演算法的時候更加方便。大話設計模式 書中是用商場收銀做例子,我將之用簡單工廠模式做了之後,現在把之前的計算例子再拿出來給一...
設計模式學習筆記 策略模式
我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...