一文读懂Java中应用最广泛的策略模式
策略模式
策略模式是应用最为广泛也是最基础的设计模式。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个类或者抽象类(可有可无,属于辅助类),提供辅助函数。
策略模式类关系图
策略模式代码
设计接口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
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!