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

曲靖市网站建设_网站建设公司_企业官网_seo优化

做网站客户没有付定金,流程图在线制作网站,官网摩尔庄园,域名注销期间网站还能打开吗java状态模式和策略模式为了在Core Java应用程序中正确使用状态和策略设计模式#xff0c;对于Java开发人员清楚地了解它们之间的区别很重要。 尽管状态和策略设计模式的结构相似#xff0c;并且都基于开放式封闭设计原则#xff0c;从SOLID设计原则表示为“ O”#xff0c… java状态模式和策略模式 为了在Core Java应用程序中正确使用状态和策略设计模式对于Java开发人员清楚地了解它们之间的区别很重要。 尽管状态和策略设计模式的结构相似并且都基于开放式封闭设计原则从SOLID设计原则表示为“ O”但它们在意图上却完全不同。 Java中的策略设计模式用于封装相关的算法集以为客户端提供运行时灵活性。 客户端可以在运行时选择任何算法而无需更改使用Strategy对象的Context类。 策略模式的一些流行示例是编写代码该代码使用诸如加密压缩或排序算法之类的算法。 另一方面状态设计模式允许对象在不同状态下表现不同。 由于现实世界中的对象通常具有状态并且它们在不同状态下的行为也有所不同例如自动售货机仅在处于hasCoin状态时才出售物品因此只有在您将硬币放在硬币上后它才会出售。 现在您可以清楚地看到策略和状态模式之间的区别 这里的意图是不同的。 状态模式有助于对象管理状态而策略模式则允许客户选择不同的行为。 另一个不容易看到的差异是谁推动了行为的改变。 在使用策略模式的情况下它是为上下文提供不同策略的客户端在状态模式上状态转换由上下文或状态本身管理。 此外如果要在State对象本身中管理状态转换则它必须保存Context的引用例如自动售货机以便它可以调用setState方法来更改Context的当前状态。 另一方面Strategy对象从不持有Context的引用而是将选择的Strategy传递给Context的客户端。 由于状态和策略模式之间的差异是Interviews上流行的Java设计模式问题之一 因此在这篇Java设计模式文章中我们将对此进行更仔细的研究。 我们将探讨Java中的策略和状态设计模式之间的相似点和不同点这将有助于增进您对这两种模式的理解。 如果查看状态和策略设计模式的UML图它们看起来彼此非常相似。 使用State对象更改其行为的对象称为Context对象类似地使用Strategy对象更改其行为的对象也称为Context对象。 记住客户端与Context对象进行交互。 在状态模式的情况下上下文将方法调用委托给以当前对象形式保存的状态对象而在策略模式的情况下上下文使用作为参数传递或在创建Context对象时提供的Strategy对象。 Java状态模式的UML图 此UML图是用于状态设计模式的用于解决用Java创建自动售货机的面向对象设计的经典问题。 您可以看到自动售货机状态使用一个接口表示该接口还具有实现以表示具体状态的实现。 每个状态还持有Context对象的引用以由于Context触发的动作而转换到另一个状态。 Java策略模式的UML图 此UML图用于策略设计模式实现排序功能。 由于排序算法很多这种设计模式使客户可以在对对象进行排序时选择算法。 实际上Java Collection框架利用此模式来实现 Collections.sort方法用于对Java中的对象进行排序。 唯一的区别是不是允许客户选择排序算法而是允许他们通过在Java中传递Comparator或Comparable接口的实例来指定比较策略。 让我们看看这两个核心Java设计模式之间的更多相似之处 状态和策略模式都可以轻松添加新的状态和策略而不会影响使用它们的Context对象。 两者都使您的代码遵循开放式封闭设计原则 即您的设计将开放以进行扩展而封闭以进行修改。 在状态和策略模式的情况下将关闭Context对象以进行修改引入新的State或新的Strategy或者您不需要修改其他状态的Context或者只需要进行最小的更改。 就像Context对象以State design Pattern中的初始状态启动一样对于Java中的Strategy 模式 Context对象也具有默认策略。 状态模式以不同状态对象的形式包装不同的行为而策略模式以不同策略对象的形式包装不同的行为。 策略和状态模式都依赖于子类来实现行为。 每个具体策略都从抽象策略扩展而来每个状态都是用于表示状态的接口子类或抽象类 。 因此现在我们知道国家和战略在结构上相似意图也不同。 让我们回顾一下这些设计模式之间的一些关键区别。 策略模式封装了一组相关的算法并允许客户端在运行时通过组合和委派来使用可互换的行为。另一方面状态模式可帮助类在不同的状态下表现出不同的行为。 状态和策略彭定康之间的另一个区别是状态封装对象的状态而策略模式封装算法或策略。 由于状态与对象紧密地关联在一起因此无法重用但是通过将策略或算法与其上下文分离我们可以使它们可重用。 在状态模式中单个状态可以包含Context的引用以实现状态转换但是Strategies不包含使用Context的引用。 可以将策略实现作为参数传递到使用它们的对象例如Collections.sort接受Comparator 这是一个策略。 另一方面状态是上下文对象本身的一部分并且随着时间的流逝上下文对象从一个状态转换到另一个状态。 尽管“策略”和“状态”均遵循“开放式封闭设计”原则但“策略”也遵循“单一职责”原则。由于每个策略都封装了单独的算法因此不同的策略彼此独立。 一个策略的更改不会命令另一个策略的更改。 策略和状态模式之间的另一个理论差异是前者定义对象的“如何”部分例如排序对象如何对数据进行排序另一方面状态模式定义对象的“什么”和“何时”部分例如对象可以做什么 当它处于特定状态时。 国家过渡的顺序在国家模式中得到很好的定义对战略模式没有这种要求。 客户可以自由选择自己选择的任何策略实施。 策略模式的一些常见示例是封装算法例如排序算法加密算法或压缩算法。 如果看到的话您的代码需要使用其他种类的相关算法而不是使用策略模式。 另一方面识别状态设计模式的使用非常容易如果您需要管理状态和状态转换而无需大量嵌套的条件语句则使用状态模式是一种模式。 最后状态和策略模式之间最重要的区别之一是策略的更改由客户完成而状态的更改则可以由上下文或状态对象本身完成。 这全是Java状态和策略模式之间的差异 。 就像我说的那样它们在类图和UML图中看起来都很相似它们都强制执行Open Closed设计原则并封装了行为。 使用策略设计模式来封装在运行时提供给Context的算法或策略它可以作为参数或组合对象并可以使用状态模式来管理Java中的状态转换。 翻译自: https://www.javacodegeeks.com/2014/04/difference-between-state-and-strategy-design-pattern-in-java.htmljava状态模式和策略模式
http://www.ihoyoo.com/news/35920.html

相关文章:

  • 上海工程建设安全协会网站网站改自适应 做自适应
  • 吕梁网站定制wordpress微信拦截
  • 多语言外贸网站源码网上花钱做ppt的网站
  • 怎么做班级网站巴中市文旅新区关坝片区安置房建设项目
  • 天津建设部网站宁波网络推广方案公司推荐
  • 做关于什么的网站配置网站开发
  • 微信订阅号做网站工业设计作品集网站
  • 设计logo网站免安庆专业做淘宝网站
  • 做公司自主网站廊坊网站制作建设
  • 建筑品牌网站基于php技术的网站建设
  • 网站管理 官网wordpress安装md
  • 安徽省建设厅网站备案wordpress没权重
  • 南宁网站设计运营重庆网页推广公司
  • 自己做网站除了域名还需要什么网站风格分析
  • 大连建设科技网站网络公司品牌推广
  • 如何做网站本地服务器除尘环保设备网站模板
  • 做机器学习比赛的网站建设摩托车110报价大全
  • 哔哩哔哩网站建设制作单页网站多少钱
  • 做网站要注意哪些网站建设到底怎么回事
  • iis网站重定向国内电商平台大全
  • 做一个营销型网站有哪些内容网站改版需求
  • 保定清苑城市建设网站有经验的宁波网站建设
  • 想自己做微信网站的工作网站迭代
  • 注册网站怎么注册不了哪里做网站比较好
  • 济南高端定制网站建设少儿培训
  • 程序员做网站类的网站犯法吗宿州网站开发建设
  • 中讯高科网站建设so导航 抖音
  • 做网站业务员提成几个点wordpress php 5.4
  • 网页设计公司建设网站wordpress 搭建 wiki
  • 手提电脑做网站服务器建设工程重要网站