当前位置: 首页 > news >正文

网站转化微信小程序四川明腾信息技术有限公司

网站转化微信小程序,四川明腾信息技术有限公司,wordpress在线朗读,优化设计七年级上册语文答案又被称为政策#xff08;方针#xff09;模式策略模式(Strategy Design Pattern)#xff1a;封装可以互换的行为#xff0c;并使用委托来决定要使用哪一个策略模式是一种行为设计模式#xff0c;它能让你定义一系列算法#xff0c;并将每种算法分别放入独立的类中#x…又被称为政策方针模式策略模式(Strategy Design Pattern)封装可以互换的行为并使用委托来决定要使用哪一个策略模式是一种行为设计模式它能让你定义一系列算法并将每种算法分别放入独立的类中以使算法的对象能够相互替换用人话翻译后就是运行时我给你这个类的方法传不同的 “key”你这个方法就去执行不同的业务逻辑解释 现实世界例子屠龙是一项危险的职业有经验将会使它变得简单经验丰富的屠龙者对不同类型的龙有不同的战斗策略 直白点说策略模式允许在运行时选择最匹配的算法 在程序编程领域策略模式又叫政策模式是一种启用在运行时选择算法的行为型软件设计模式仔细一想这不就是 if else 干的事吗先直观的看下传统的多重 if else 代码 再来看策略模式类图 策略模式涉及到三个角色 Strategy策略接口或者策略抽象类用来约束一系列的策略算法(Context 使用这个接口来调用具体的策略实现算法) ConcreateStrategy具体的策略类(实现策略接口或继承抽象策略类) Context上下文类持有具体策略类的实例并负责调用相关的算法先来看看最简单的策略模式 demo1-策略接口(定义策略) 2-具体的算法实现 3-上下文的实现 4-客户端使用(策略的使用) 这种策略的使用方式其实很死板真正使用的时候如果还这么写和写一大推 if-else 没什么区别所以我们一般会结合工厂类在运行时动态确定使用哪种策略策略模式侧重如何选择策略、工厂模式侧重如何创建策略策略模式的功能就是把具体的算法实现从具体的业务处理中独立出来把它们实现成单独的算法类从而形成一系列算法并让这些算法可以互相替换策略模式的重心不是如何来实现算法而是如何组织、调用这些算法从而让程序结构更灵活具有更好的维护性和扩展性实际上每个策略算法具体实现的功能就是原来在 if-else 结构中的具体实现每个 if-else 语句都是一个平等的功能结构可以说是兄弟关系策略模式呢就是把各个平等的具体实现封装到单独的策略实现类了然后通过上下文与具体的策略类进行交互策略模式 实现策略接口(或抽象类)的每个策略类 上下文的逻辑分派 策略模式的本质分离算法选择实现所以说策略模式只是在代码结构上的一个调整即使用了策略模式该写的逻辑一个也少不了到逻辑分派的时候只是变相的 if-else而它的优化点是抽象了出了接口将业务逻辑封装成一个一个的实现类任意地替换在复杂场景(业务逻辑较多)时比直接 if-else 更好维护和扩展些在策略模式中我们可以自己定义谁来选择具体的策略算法有两种 客户端当使用上下文时由客户端选择像我们上边的 demo 上下文客户端不用选由上下文来选具体的策略算法可以在构造器中指定避免冗长的if/else 比如在出门旅游时路线、交通工具的类型、天数、舱位等级、餐饮、住宿等等 每个节点在执行时都需要根据预算进行不同的操作从而引起大量的判断 增加一个策略修改一个策略都有可能牵一发而动全身 需要对所有状态进行回测 整个业务如图所示所有的判断都耦合在业务流程内部牵一发而动全身 使用策略模式 我们可以将某一条件Type下的逻辑聚合封装到具体的策略类中 使用策略类后如图所示每个的情况被封装聚合到单个策略类中相互隔离 所以策略模式的作用主要体现在 1-解耦策略的定义、创建和使用 控制代码的复杂度让每个部分都不至于过于复杂、代码量过多 2-让复杂框架满足开闭原则 添加或者修改新策略的时候最小化、集中化代码改动减少引入 bug 的风险 策略的创建 通常会通过类型type来判断创建哪个策略来使用 这里有两种创建方式 if-else创建 适用于有状态的策略类每次创建一个新的策略类给业务方使用 通过工厂模式里的Map进行创建 适用于无状态的策略类创建大家共用一个策略类即可 本质上讲是借助“查表法”根据 type 查表替代根据 type 分支判断Java中的例子 采用 Comparator 参数的 Collections.sort() 方法根据 Comparator 接口的不同实现对象会以不同的方式进行排序使用策略模式应当 许多相关的类只是行为不同策略模式提供了一种为一种类配置多种行为的能力 你需要一种算法的不同变体比如你可能定义反应不用时间空间权衡的算法当这些算法的变体使用类的层次结构来实现时就可以使用策略模式 一个算法使用的数据客户不应该对其知晓使用策略模式来避免暴露复杂的特定于算法的数据结构 一个类定义了许多行为这些行为在其操作中展现为多个条件语句移动相关的条件分支到它们分别的策略类中来代替这些条件语句
http://www.pierceye.com/news/548984/

相关文章:

  • php的网站架构建设框架wordpress如何运行
  • 广州seo网站排名优化数码设计网站
  • 免费做视频相册的网站网站建设的功能描述
  • 网站建设方案浩森宇特alexa排名是什么意思
  • 网上手机网站建设计划书百度小说风云榜排名
  • 用js来做网站帝国cms这么做网站
  • 网站建设需求分析班级网站备案服务类型
  • 网站备案幕布照片怎么算合格北京专业网站开发
  • 浙江建设职业技术学院塘栖校区网站网络推广方法有几种
  • 呢图网站场建设封面长安镇做网站
  • 搜索关键词的网站黄山做网站
  • 网络建站系统去除wordpress主题头部作者信息
  • 鼓楼微网站开发番禺有经验的网站建设
  • 对网站建设心得进入公众号继续阅读怎么弄
  • 网站建设公司投诉电话可以先做网站后备案吗
  • 顺的品牌网站设计价位网站开发合同书
  • 用html5制作个人网站深圳百度国际大厦
  • 网络网站公司网站管理平台扩展插件
  • 个人小说网站怎么做把自己做的网页变成网站
  • led网站制作网站登录后不显示内容
  • 推广网站公司兴义市住房和城乡建设局网站
  • 营销网站建设的公司哪家好创建网站超链接
  • 苏州网站优化排名推广企业网站建设价格
  • 在线制作论坛网站wordpress建立好的网站
  • 网站的功能规范商城网站静态模板下载
  • 双语言网站源码制作网页的软件哪个好
  • 政务网站建设需求网站首页页面代码
  • 网站产品详情页怎么做的用服务器做网站空间
  • 河北网站制作报价长春市建设技工学校网站
  • 盘锦做网站专家常州网站建设企业网站制作