所谓策略模式就是定义了多种算法,而让不同算法之间的切换不会影响到客户端。
策略模式主要涉及3个组成部分
(1) 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
(2) 抽象策略对象:它可由接口或抽象类来实现。
(3) 具体策略对象:它封装了实现同不功能的不同算法。
因此很好理解就是定义一个抽象的接口,该接口包含了一个之类公共的方法,然后定义不同的算法去实现该接口,最后定义一个容器即环境,使用组合的方式将抽象接口注入到容器当中。
最后在调用时动态的向容器中注入具体的策略方法。
实例如下
定义策略接口
public interface Oprator{
void work();
};
定义策略实现类
public class AddOperator implements Operator{
void work(){
sysout("添加操作");
}
};
public class UpdateOperator implements Operator{
void work(){
sysout("修改操作");
}
};
定义环境
public class Context{
private Operator operator;
public Context(Operator ope){
this.operator = ope;
}
public void operate(){
operator.work();
}
};
调用
main(){
Context addCon = new Context(new AddOperator());
addCon.operator();
Context updateCon = new Context(new updateOperator());
updateCon.operator();
}
策略模式主要涉及3个组成部分
(1) 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
(2) 抽象策略对象:它可由接口或抽象类来实现。
(3) 具体策略对象:它封装了实现同不功能的不同算法。
因此很好理解就是定义一个抽象的接口,该接口包含了一个之类公共的方法,然后定义不同的算法去实现该接口,最后定义一个容器即环境,使用组合的方式将抽象接口注入到容器当中。
最后在调用时动态的向容器中注入具体的策略方法。
实例如下
定义策略接口
public interface Oprator{
void work();
};
定义策略实现类
public class AddOperator implements Operator{
void work(){
sysout("添加操作");
}
};
public class UpdateOperator implements Operator{
void work(){
sysout("修改操作");
}
};
定义环境
public class Context{
private Operator operator;
public Context(Operator ope){
this.operator = ope;
}
public void operate(){
operator.work();
}
};
调用
main(){
Context addCon = new Context(new AddOperator());
addCon.operator();
Context updateCon = new Context(new updateOperator());
updateCon.operator();
}