策略模式:高内聚 低耦合 可扩展(OCP)
在策略与最终用户之间存在一层封装--中间层类,中间层类有大部分相同的处理程序,但有一些重要步骤可以有多种方法处理,这些可以交给最终用户选择,这样就可以把这些重要步骤的处理方法抽取出来,设计成抽象类或者接口(即策略的父类),然后提供策略的不同实现类(实际只有重要步骤处理方法的不同实现),这样最终用户就可以根据需要在中间层类的构造方法中提供不同策略(策略的实例)
策略模式需要设计中间类(有成员变量--抽象策略类),抽象策略类,具体策略(抽象策略的具体实现),并且中间类必须有构造方法传递策略
interface X{
public void operate();
}
class A implements X{
public void operate(){...};
}
class B implements X{
public void operate(){...};
}
class Tool{
private X x;
public Tool(X x){this.x = x}
public operate(){this.x.operate()}
}
class User{
main(...){
Tool tool;
tool = new Tool(new A());
tool.operate();
tool = new Tool(new B());
tool.operate();
}
}