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