策略模式

策略模式

定义

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

一般情况下我们是将一种行为写成一个类方法,比如计算器类中有加、减、乘、除四种方法,而策略模式则是将每一种算法都写成一个类,然后动态的选择使用哪一个算法。

针对场景

对于原来的代码不可以做修改,只可以拓展的情况下可使用此模式,即开闭原则(对修改关闭、对扩展开放)。

比如我们得到的是一个jar包,其中的方法是不允许我们修改的,但它又没有我们想要的方法实现,此时可拓展定义方法的接口类,实现我们自己的功能。

使用方式

利用配置文件动态的生成使用策略的代码,不同的配置调用不同的配置。

缺点

  • 随着你的策略增加,你的类也会越来越多。
  • 所有的策略类都要暴露出去,所以如果你在实际开发中使用了策略模式,一定要记得写好文档让你的伙伴们知道已有哪些策略。就像 shiro 默认提供了三种验证策略,就必须在文档中写清楚,否则我们根本不知道如何使用。

shiro使用示例

我们只要自定义一个 MyAuthenticationStrategy 继承 shiro 的 AbstractAuthenticationStrategy。然后在 MyAuthenticationStrategy 实现父类要求的方法,再修改配置文件将当前验证策略改为你定义的验证策略:

authcStrategy = 你的包名.MyAuthenticationStrategy

代码参考地址

https://github.com/wukunpdd/DesignPatternCode/tree/master/src/main/java/cn/wukun/strategy

你可能感兴趣的:(设计模式)