在软件开发中,我们时常用到if-else来对进行条件判断,然后再进行相应的操作,但这样做会使得项目再日后的维护中出现困难,所以,当遇到比较复杂的if-else结构的时候,使用策略模式是很好的选择
举一个简单的计算小例子,如对两个数进行加减乘除
第一步,定义计算接口
1 | public interface CalculateStrategy { |
第二步,实现策略类
加法策略
1
2
3
4
5
6public class PlusStrategy implements CalculateStrategy {
@Override
public int calculateComeout(int number1, int number2) {
return number1 + number2;
}
}减法策略
1
2
3
4
5
6public class MinusStrategy implements CalculateStrategy {
@Override
public int calculateComeout(int number1, int number2) {
return number1 - number2;
}
}
实例运行
1 | public class Main { |
当然,这只是一个十分简单的实例,再实际应用中远没有这么“鸡肋”,比如我曾经开发过的一个小项目
策略模式实战
OpeningStartAnimation是一个开屏动画View,所以这里的策略模式是与绘画策略相关的
- 绘画策略接口
1 | public interface DrawStrategy { |
- 其中的一个具体实现
1 | public class LineDrawStrategy implements DrawStrategy { |
- 示例
这是选择策略的方法
1
2
3
4
5
6
7
8
9 /**
* 开放绘制策略接口,可由用户自行定义
* @param drawStrategy 绘制接口
* @return Builder对象
*/
public Builder setDrawStategy(DrawStrategy drawStrategy) {
mOpeningStartAnimation.mDrawStrategy = drawStrategy;
return this;
}策略的具体实现
1 | @Override |
具体项目可见