设计模式回顾之四:策略模式(Strategy)
设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
策略模式:
根据所处的上下文,使用不同的业务规则或算法。
将算法的选择和算法的实现相分离。允许根据上下文进行选择。
让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。
程序实现:
1、算法接口:
public interface Strategy {
public void algorithm();
}2、算法实现1:
public class FirstStrategy implements Strategy {
public void algorithm() {
System.out.println("THE FIRST STRATEGY!!!");
}
}3、算法实现2:
public class SecondStrategy implements Strategy{
public void algorithm() {
System.out.println("THE SECOND STRATEGY!!!");
}
}4、使用算法的类:
public class Context {//策略使用类
private Strategy strategy;
public void setStrategy(Strategy str){//设置策略
this.strategy=str;
}
public void doStrategyWork(){//使用策略
strategy.algorithm();
}
}5、程序入口:
public static void main(String[] args){
Context c=new Context();//策略使用类
Strategy a1=new FirstStrategy();//实例化策略1
c.setStrategy(a1);//设置策略1
c.doStrategyWork();//让策略1工作
Strategy a2=new SecondStrategy();//实例化策略2
c.setStrategy(a2);//设置策略2
c.doStrategyWork();//让策略2工作
c.setStrategy(a1);
c.doStrategyWork();
}举例:不同的业务场景使用不同的业务规则(如计费、价格等)。
相关推荐
tracy 2020-08-31
natloc 2020-07-18
Codeeror 2020-06-28
baike 2020-06-14
Ingram 2020-06-04
yishujixiaoxiao 2020-06-03
走在IT的路上 2020-05-01
txlCandy 2020-04-20
清溪算法君老号 2020-04-14
wuxiaosi0 2020-02-22
shawsun 2020-02-14
spb 2020-02-14
xcguoyu 2020-02-14
wangxiaohua 2014-05-29
mbcsdn 2019-12-20
ustbfym 2019-12-01