谈谈自己对策略设计模式的简单理解
策略设计模式概念网上有很多啦,我就黏贴过来:
策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用
谈谈我的理解,
策略模式中有个如上图三个重要的元素,
容器---持有策略的引用
策略--定义方法的接口
具体策略---不同的策略实现方式
策略接口有不同的子类实现,对于同一个算法,比如接口提供啦加密算法,
public void encrypt(String aa);
那么子类对于加密有不同的方式,第一个子类就可以是简单加密,第二个子类就是复杂加密
但是对于容器来说是不管是什么加密方式只对传递进来的策略实现进行加密方式调用
在容器类中
private Strategy strategy;//对策略进行持有
public Content(Strategy strategy){
this.strategy=strategy;//传递进来不同的子类实现
}
public void encrypt()
{
//传递进来是什么子类就调用的是什么算法实现
strategy.encrypt();
}
容器持有策略的引用并在其中进行引用调用,也就是说在容器中对策略的引用是通过传递策略接口实现类来动态调用不同的算法的实现。
这样对于客户端来说,就可以动态的选择不同的子类,达到同一结果不同算法实现。