Strategy Pattern
策略模式主要是指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。
一个类的行为或其算法可以在运行时更改。
策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。
如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。
组成
环境类(Context):用来操作策略的上下文环境
public class StrategyPattern {
private StrategyInter strategyInter;
public StrategyPattern(StrategyInter strategyInter) {
this.strategyInter = strategyInter;
}
public void exe(int m,int n) {
System.out.println(strategyInter.doOper(m, n));
}
}
抽象策略类(Strategy):策略的抽象
public interface StrategyInter {
public int doOper(int m,int n);
}
具体策略类(ConcreteStrategy):具体的策略实现
public class StrategyOpeAdd implements StrategyInter{
@Override
public int doOper(int m, int n) {
return m+n;
}
}
应用
旅行的出游方式,选择骑自行车、坐汽车、坐火车、坐飞机,每一种旅行方式都是一个策略。
老师评讲试卷,一道题有多种解法。
扫描商户订单给商户发送通知,不同的交易类型,有不同通知报文。TX(提现),CZ(充值)。
超市活动打折优惠:
普通计费
满300减20,满400减80
满500打八折
状态模式
状态模式是随着状态的改变不停地更改执行方法。
好比我们旅游,对于策略模式我们只需要选择其中一种出行方法就好了。
对于状态模式,可能我们到了A地点选择的是火车,到了B地点又选择飞机,根据不同的状态选择不同的出行方式。
工厂模式
工厂模式是创建型模式 ,它关注对象创建,提供创建对象的接口,让对象的创建与具体的使用客户无关。
策略模式是对象行为型模式 ,它关注行为和算法的封装 。