设计模式13-策略模式

定义

策略模式是定义了一系列的算法,把他们一个一个的封装起来,并且使他们可以相互替换。

实现

1
2
3
public interface Strategy{
public int doAction(int num1,int num2);
}
1
2
3
4
5
6
public class OperationAdd implement Strategy{
@Override
public int doAction(int num1, int num2){
return num1+num2;
}
}
1
2
3
4
5
6
public class OpeartionDel implement Strategy{
@Override
public int doAction(int num1, int num2){
return num1-num2;
}
}
1
2
3
4
5
6
7
8
9
10
11
public class Operation{
private Strategy strategy;

public Operation(Strategy strategy){
this.strategy = strategy;
}

public int doAction(int num1, int num2){
return strategy.doAction(num1, num2);
}
}
1
2
3
4
5
6
public class Demo{
public static void main(String[] args){
Operation operation = new Operation(new OpeartionAdd());
System.out.println("10+5="+operation.doAction(10,5))
}
}

优点

1、算法可以自由切换
2、避免使用多重条件判断
3、扩展性良好

缺点

1、策略类会增多
2、所有策略类都需要对外暴露