一文读懂Java中应用最广泛的策略模式

2023-12-14 11:40:41

策略模式

策略模式是应用最为广泛也是最基础的设计模式。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个类或者抽象类(可有可无,属于辅助类),提供辅助函数。

策略模式类关系图

策略模式代码

设计接口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

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

文章来源:https://blog.csdn.net/liwenxiang629/article/details/134989624
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。