定义

  • 定义一系列的算法,把它们封装起来,并且之间可以互相替换
  • 例如去罗马,咱们有很多个方案可以达到,飞机、火车、穷点骑自行
  • 方案是变化,但是使用方案这个动作是不变的,将不变和变化的部分分离开来这是每一个设计模式的核心思想,而策略模式的目的就是将算法的使用和算法的实现分离开来,算法的实现变化的,应对不同的业务逻辑

具体构成

  • 一个基于策略模式的程序至少包括两个部分,第一个是策略组,也就是那些不同的算法方案,负责具体的计算过程。第二个就是环境类,它接受客户请求,随后将请求委托给某一个策略类,通过使用这个模式,就可以避免因不同的业务逻辑要大段的if条件分支语句

优点

  • 策略模式利用组合、委托和多态等思想和技术,有效避免多次条件语句
  • 策略模式提供了对开发-封闭原则的完美支持,将不同的算法封装在独立的策略类中,易于切换、理解、拓展
  • 策略模式中的算法可以复用在系统其他地方,避免许多重复的复制粘贴
  • 让环境类具有执行算法的能力,也算是继承的一种更轻便的代替

缺点

  • 使用者必须要清楚策略类中所有的算法的具体实现逻辑,了解其算法之间的不同点,这样才能根据具体情况作出合适的算法选择,这就暴露了策略类的所有实现,这就违反了最少知识原则

实例代码后续补上-表单提交封装

04-16 05:31