设计模式之 策略模式:
主要由3部分组成:
1.抽象策略角色:策略类,通常为一个接口或者抽象类:
package com.sysu.mse;
public interface Strategy {
public int Calculator(int a,int b);
}
2.具体的策略角色,包含了具体实现的算法,来提供不同策略(通常为自定义不同的策略)
策略1: Add操作(加法)
public class Add implements Strategy{
@Override
public int Calculator(int a, int b) { //implements the interface and implements the abstract method of Calculator.
return a+b;
}
}
策略2:Subtract操作(减法)
public class Subtract implements Strategy {
@Override
public int Calculator(int a, int b) {
return a-b;
}
}
策略3:Multiple操作(乘法)
public class Multiple implements Strategy{
@Override
public int Calculator(int a, int b) {
return a*b;
}
}
3. 环境角色:持有一个策略类的引用,最终给客户端调用(如TreeMap和TreeSet构造函数)
class Computer{
private int value;
public int com(int a,int b,Strategy st)
{
value=st.Calculator(a,b); //vital
return value;
}
}
附:客户端调用:
public class TestStrategy {
public static void main(String[] args) {
Computer com1=new Computer();
Add add=new Add();
System.out.println(com1.com(17,2,add)); //策略1
Multiple mul=new Multiple();
System.out.println(com1.com(17,2,mul)); //策略3
}
}
结果为:
19
34