策略模式
策略模式是应用最为广泛也是最基础的设计模式。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个类或者抽象类(可有可无,属于辅助类),提供辅助函数。
策略模式类关系图
策略模式代码
设计接口Strategy
public interface Strategy {
public void operate();
}
设计类Context,调用的operate方法,是通过setStrategy传入对象来决定的!通过setStrategy进行传参的方法也可以通过Context的构造方法来实现
public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy){
this.strategy = strategy;
}
public void operate(){
this.strategy.operate();
}
}
设计类Strategy1,实现接口Strategy
public class Strategy1 implements Strategy {
@Override
public void operate() {
System.out.println("策略1");
}
}
设计类Strategy2,实现接口Strategy
public class Strategy2 implements Strategy {
@Override
public void operate() {
System.out.println("策略2");
}
}
测试策略模式,setStrategy传入new Strategy1() ,context.operate()运行的是类Strategy1中的operate()方法;setStrategy传入new Strategy2() ,context.operate()运行的是类Strategy2中的operate()方法;
public class TestStagegy {
public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new Strategy1());
context.operate();
context.setStrategy(new Strategy2());
context.operate();
}
}
输出:
策略1
策略2
如果想下载源码,可以下载
https://download.csdn.net/download/liwenxiang629/88628137
一句话总结策略模式
同一个方法A跟据传参实例的不同,执行不同实例的同名方法A
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!