策略模式本质上也是java多态性的一种表现形式,符合开闭原则,
java中,接口抽象出某一些行为,类抽象出具有特定行为的对象,当一个接口有多个实现类时,基于接口的调用需要依据实际情况确认调用的到底是哪个实现类对应的实现方法
public interface Test{
public int compare(int a,int b);
}
public class A implements Test{
public int compare(int a,int b){
//A的具体实现方法
}
}
public class B implements Test{
public int compare(int a,int b){
//B的具体实现方法
}
}
public class C implements Test{
public int compare(int a,int b){
//C的具体实现方法
}
}
//逻辑控制器
public class CompareController{
private Test test;
public CompareController(Test test){
this.test = test;
}
public int cc(int a, int b){
test.compare(a,b)
}
}
//通过修改控制器中接口的实现类,达到同一个方法调用不同实现类进行实现
public class Context{
public static void main(String[] args){
//根据对象的下转型确认实例化的对象为哪个类的对象
CompareController a = new CompareController(new A());
CompareController b = new CompareController(new B());
CompareController c = new CompareController(new C());
a.cc(1,2);
b.cc(1,2);
c.cc(1,2);
}
}
如果compare方法的参数也是可变的,需要根据不同的不同的情形进行扩展,在形参处进行扩展