/**
* 策略模式定义了算法家族,分别封装起来,让它们之间可互相替换,此模式让算法的变化,不会影响到使用算法的客户。
* 抽象策略类
* @author gaoyi
*
*/
abstract class Strategy {
//算法方法
public abstract void doSomeThing();
}
package smu.gaoyi.pattern.strategy;
//具体策略(算法)A
public class StrategyA extends Strategy{
@Override
public void doSomeThing() {
System.out.println("StrategyA...");
}
}
package smu.gaoyi.pattern.strategy;
public class StrategyB extends Strategy{
@Override
public void doSomeThing() {
System.out.println("StrategyB...");
}
}
package smu.gaoyi.pattern.strategy;
public class Context {
Strategy strategy;
//初始化,传入具体的策略对象
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void contextDo() {
strategy.doSomeThing();
}
}
package smu.gaoyi.pattern.strategy;
public class Client {
public static void main(String[] args) {
Context context;
//实例化不同的策略
context = new Context(new StrategyA());
context.contextDo();
context = new Context(new StrategyB());
context.contextDo();
}
}
使用场景:
在不同的时间应用不同的业务规则时,可考虑使用策略模式
策略模式
最新推荐文章于 2024-11-16 01:38:02 发布