策略模式定义
将一组算法封装到实现共同接口的独立类中,使得它们可以相互替换。
策略举例
项目中执行需求:有关类型1的需求,由A做;类型2的需求,由B做;类型3的需求,由C做。
代码实现
public void doItem(int type) {
if (type == 1) {
// do action
workA();
System.out.println("A do work.");
} else if (type == 2) {
// do action
workB();
System.out.println("B do work.");
} else if (type == 3) {
// do action
System.out.println("C do work.");
} else {
// do action
workC();
System.out.println("do it yourself.");
}
}
我们最快想到的,就是if…else…或者case。大多数情况下,这样是合理的。
但是,如果type越来越多,action越来越复杂,doItem方法就会变得越来越庞大,代码的可读性也就会越来越差。
下面,介绍一下前段时间在项目中的一次重构经历,主要用到策略模式。
策略模式简单示例
// 定义策略接口
public interface Strategy {
<