目录
策略模式说明
(1)
策略模式,其实就是定义一组算法,将每个算法都封装起来,使得它们之间可以相互替换,这样,可以做到算法独立于客户端,不随客户端的变化而变化。
(2)
策略模式中最主要的涉及到三种角色。
1)抽象策略角色(strategy):通常使用接口或者抽象类去实现。其定义了多个具体策略的公共接口,具体策略以不同的方式来实现这个接口。环境角色使用这个接口来调用具体策略角色中定义的算法。
2)具体策略角色(concretestrategy):实现或者继承抽象策略,封装了具体的算法或者行为。
3)环境角色(context):维护一个对抽象角色的引用,用来给客户端调用。
(3)
策略模式的应用场景
1)对同一类型问题的多种处理方式,仅是具体的算法或者行为的区别。
2)封装同一类型的操作,同时又要做到解耦。
3)同一个抽象类有多个子类,又需要使用if-else或者switch-case来选择具体子类时。
策略模式具体应用
(1)抽象策略角色
package com.model.strategy;
public interface Strategy {
public int calculate(int num1,int num2);
}
(2)定义具体的策略角色
package com.model.strategy;
public class AddStrategy implements Strategy {
public int calculate(int num1, int num2) {
return num1+num2;
}
}
package com.model.strategy;
public class SubtractStrategy implements Strategy{
public int calculate(int num1, int num2) {
return num1-num2;
}
}
(3)环境角色
package com.model.strategy;
public class Environment {
private Strategy strategy;
public Environment(Strategy strategy){
this.strategy = strategy;
}
public int calculate(int a,int b){
return strategy.calc(a, b);
}
}
(4)测试类
package com.model.strategy;
public class TestStrategy {
public static void main(String[] args) {
Environment environment = new Environment(new AddStrategy());
int result = environment.calc(20, 30);
System.out.println(result);
}
}