您的位置:首页 > 其它

设计模式之策略模式

2017-05-05 14:35 225 查看
概述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化

角色:

Strategy 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法

ConcreteStrategy 以Strategy接口实现某具体算法

Context 用一个ConcreteStrategy对象来配置。 维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据

类图:



实现:

算法公共接口

/**
* 模拟算法
*/
interface MathCopy {
public void method();
}


算法实现:

public class Add implements MathCopy {
@Override
public void method() {
System.out.println("做加法");
}
}


public class Mins implements MathCopy {
@Override
public void method() {
System.out.println("做减法");
}
}


Context

public class Context {
MathCopy mathCopy;

public Context(MathCopy mathCopy){
this.mathCopy = mathCopy;
}

public void doIt(){
this.mathCopy.method();
}
}


测试

public class testStrategy {
public static void main(String[] args) {
MathCopy m = new Mins();
Context context = new Context(m);
context.doIt();
}
}


打印:

做减法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式