设计模式之我见系列——策略模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式之我见系列——策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、設計圖
二、Demo代碼
1. Strategy接口
package com.mc.core;/*** Created by LCF on 2016/1/25.* 功能:核心策略的具體實現類。* 說明:Java中類不加任何修飾符是默認狀態,此情況只允許在同一個包訪問,之所以這么設計是為了減少暴露不必要變量的風險。* 觀點:個人認為對于類或者方法:能不暴露更多的就不暴露更多的。*/ interface Strategy {/*** 包含核心策略的公共接口* @param a* @param b* @return*/int operate(int a, int b); }?說明:此接口包含抽象出來的核心的策略。
?
2. AddStrategy和SubStrategy
package com.mc.core;/*** Created by LCF on 2016/1/25.* 功能:加法策略的具體實現類。* 說明:Java中類不加任何修飾符是默認狀態,此情況只允許在同一個包訪問,之所以這么設計是為了減少暴露不必要變量的風險。* 觀點:個人認為對于類或者方法:能不暴露更多的就不暴露更多的。*/ class AddStrategy implements Strategy {@Overridepublic int operate(int a, int b) {return a+b;} }?
package com.mc.core;/*** Created by LCF on 2016/1/25.* 功能:減法策略的具體實現類。* 說明:Java中類不加任何修飾符是默認狀態,此情況只允許在同一個包訪問,之所以這么設計是為了減少暴露不必要變量的風險。* 觀點:個人認為對于類或者方法:能不暴露更多的就不暴露更多的。*/ class SubStrategy implements Strategy {@Overridepublic int operate(int a, int b) {return a - b;} }說明:上述2個類,都是核心策略接口的具體實現類。
?
3. Context類
package com.mc.core;/*** Created by LCF on 2016/1/25.* 上下文對象實現類,有承上啟下的作用。*/ public class Context {/*** 限制用戶調用無參構造方法*/private Context(){}/*** 策略的公共接口類*/private Strategy strategy;/*** 枚舉類型限制選擇。*/public enum Choice{ADD,SUB}/*** 構造方法為確定使用哪種策略* @param choice 具體策略的映射*/public Context(Choice choice){if ("ADD".equals(choice.toString())) {strategy=new AddStrategy();}else{strategy=new SubStrategy();}}/*** 本質為調用公共接口類的方法。* @param a 運算所需第一個參數* @param b 運算所需第二個參數* @return*/public int operate(int a,int b){return strategy.operate(a,b);} }說明:此為承上啟下的上下文對象類,1. 此類中要由構造函數確定具體調用那種實現類,2. 還要傳入實現策略的具體數據。
?
項目開源在:http://git.oschina.net/codingox/DesignPattern-Strategy
轉載于:https://www.cnblogs.com/LiuChunfu/p/5157336.html
總結
以上是生活随笔為你收集整理的设计模式之我见系列——策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cgroup 好文集合
- 下一篇: asp.net ajax控件工具集 Au