首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式:策略模式

2012-10-31 
设计模式:策略模式策略模式在集合类的Comparator中大量应用策略模式也强调了一个设计原则:多使用组合,少用

设计模式:策略模式

策略模式在集合类的Comparator中大量应用

设计方式:策略模式

设计方式:策略模式

设计方式:策略模式

策略模式也强调了一个设计原则:多使用组合,少用继承。

策略模式就是使用变量来强调“多使用组合”

设计方式:策略模式

设计方式:策略模式

设计方式:策略模式

下面定义一个使用策略模式来实现加减乘除

?

package com.test.strategy;/** * 抽象策略角色 * */public interface Strategy {public int calculate(int a,int b);}

上面定义了一个抽象策略角色,其中定义了一个caculate方法?。

?

package com.test.strategy;/** * 具体策略角色 * */public class AddStrategy implements Strategy {public int calculate(int a, int b) {return a + b;}}

?

package com.test.strategy;/** * 具体策略角色 */public class SubtractStrategy implements Strategy {public int calculate(int a, int b) {return a - b;}}

?

?

package com.test.strategy;/** * 具体策略角色 */public class MultiplyStrategy implements Strategy {public int calculate(int a, int b) {return a * b;}}

?

?

package com.test.strategy;/** * 具体策略角色 */public class DivideStrategy implements Strategy {public int calculate(int a, int b) {return a / b;}}

?

上面定义了四个具体策略解决,实现了抽象策略角色接口,并实现了相应的方法,用来做加减乘除。

package com.test.strategy;//环境角色public class Enviroment {private Strategy strategy;public Enviroment(Strategy strategy) {this.strategy = strategy;}public Strategy getStrategy() {return strategy;}public void setStrategy(Strategy strategy) {this.strategy = strategy;}public int caculate(int a,int b){return strategy.calculate(a, b);}}

?

环境类用来维护及调用策略类。

package com.test.strategy;public class Client {public static void main(String[] args) {//加法AddStrategy addStrategy = new AddStrategy();Enviroment enviroment = new Enviroment(addStrategy);System.out.println(enviroment.caculate(3, 4));//减法SubtractStrategy subtractStrategy = new SubtractStrategy();enviroment = new Enviroment(subtractStrategy);System.out.println(enviroment.caculate(3, 4));//乘法MultiplyStrategy multiplyStrategy = new MultiplyStrategy();enviroment = new Enviroment(multiplyStrategy);System.out.println(enviroment.caculate(3, 4));//除法DivideStrategy divideStrategy = new DivideStrategy();enviroment = new Enviroment(divideStrategy);System.out.println(enviroment.caculate(3, 4));}}

?

具体的客户端调用。

设计方式:策略模式

设计方式:策略模式

?

再看一个例子:

设计方式:策略模式

热点排行