美文网首页
程序开发中的设计模式——策略模式

程序开发中的设计模式——策略模式

作者: 这人很懒 | 来源:发表于2018-04-23 10:05 被阅读51次

什么是策略模式

策略模式中的一个关键角色是策略类,它为所有支持的或相关的算法声明了一个共同接口。PS:还有使用策略接口来实现相关算法的具体策略类。场景(context)类的对象配置有一个具体策略对象的实例,场景对象使用策略接口调用由具体策略类定义的算法。静态关系图如下: 策略模式静态关系图

策略模式的设计原则

策略模式的设计原则是把一个类中经常改变或者是将来可能改变的部分提取出来,作为一个接口,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类。

何时使用策略模式

  • 一个类再起操作中使用多个条件语句来定义许多行为。我们可以把相关的条件分支移到他们自己的策略类中。
  • 需要算法的各种变体
  • 需要避免吧复杂的、预算法相关的数据结构暴露给客户端

策略模式中的三个对象

  • 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
  • 抽象策略类:它可以有接口或抽象类来实现。
  • 具体策略对象:他封装了实现不同功能的算法。

策略模式的优缺点

优点

  • 算法可以自由切换,通过实现抽象策略,通过角色对其封装,保证对外提供“可自由切换”的策略
  • 避免使用多重条件判断,如果有多重策略,那么每个策略只需要实现自己的方法
  • 扩展性好,可以在现有的系统中任意的加入新的策略 (需要符合 OCP 原则)

缺点

  • 策略类数量增多,每个策略都是一个类,复用的可能性很小,类的数量会增多
  • 所有的策略都要对外暴露,上层模块必须知道有哪些策略才能知道采用哪种对应的策略,(可以通过工厂模式、代理模式、享元模式修正)

使用策略模式时的注意事项

如果一个系统的策略多余四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

参考文献:Objective-C编程之道 iOS设计模式

特别鸣谢:Runoob

相关文章

  • Java设计模式——策略模式

    Java设计模式之策略模式 这期分享的模式是策略模式是程序设计中最常用的了,因为开发工作中总是会使用到策略模式。 ...

  • 设计模式---Strategy模式

    1.什么是Strategy模式(策略模式) 策略模式,举个现实应用开发的例子:在我们的程序设计中,如果需要提供多种...

  • 程序开发中的设计模式——策略模式

    什么是策略模式 策略模式的设计原则 策略模式的设计原则是把一个类中经常改变或者是将来可能改变的部分提取出来,作为一...

  • Strategy(策略) - java 源码中的策略模式

    标签(空格分隔): 设计模式 前言 Strategy(策略)设计模式是设计架构时候常用到的设计模式之一。我们开发中...

  • 《iOS开发》--------常用的设计模式

    关于iOS开发中的设计模式,当下有集中最常用的设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • 11.7设计模式-策略模式-详解

    设计模式-策略模式 策略模式详解 策略模式在android中的实际运用 1.策略模式详解 2.策略模式在andro...

  • 面试之设计模式2018-12-20

    面试常问的面试题,设计模式,差不多我们项目开发中也常会用到这些: 简单工厂模式,策略模式、装饰模式、代理模式、工厂...

  • 探究osg中的程序设计模式【目录】

    前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式...

  • 基于【策略模式】设计多渠道发送消息

    前言:设计模式源于生活 策略模式的基本概念 策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系...

网友评论

      本文标题:程序开发中的设计模式——策略模式

      本文链接:https://www.haomeiwen.com/subject/gmsklftx.html