第8篇 状态模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 状态模式 回顾 迭代器允许访问聚合的元素,而不需要暴露它的内部结构 迭代器将遍历集合的工作封装进一个对象中 当使用迭代器的时候,我们依赖聚合提供遍历 迭代器提供一个通用的接口,可以遍历聚合的项,当编码使用聚合的项时,就可以使用多态机制 组合模式提供一个结构,可同时包含个别对象和组合对象 使用组合结构,我们能把相同操作应用在组合和个别对象上。 目标 状态模式允许一个对象基于内部状态而拥有不同的行为 通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了 状态转换可以由State类或Context类控制 使用状态模式通常会导致设计类的数目增加 举例 糖果自动售买控制器 代码 代码 解决问题 我们将状态对象封装在各自的类中,然后在动作发生时委托给当前状态。 具体步骤: ①首先,定义一个State接口,在这个接口内,糖果机的每个动作都有一个对应的方法 ②为机器中的每个状态实现状态类,这些类负责在对应的状态下进行机器的行为(实现State接口) ③将动作委托到状态类。 代码 实现每个状态类-1 实现每个状态类-2 运行 小结 将每个状态的行为局部化到它自己的类中 将容易产生问题的if语句删除,以方便日后维护 让每一个状态“对修改关闭”,让糖果机“对扩展开放”,方便加入新的状态类 定义状态模式 定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 模式结构:三种角色 UML类图 继续完成 当曲柄被转动时,有10%的机率掉下来的是两颗糖果。 代码 代码 运行 思考 我们在本例状态中,发现有许多重复代码,其实我们可以把State设计成抽象类,然后把方法的默认行为放在其中,供子类继承。 你会实例化许多GumballMachine对象吗?如果是,要将状态的实例移到静态的实例变量中共享。 总结 状态模式允许一个对象基于内部状态而拥有不同的行为 通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了 状态转换可以由State类或Context类控制 使用状态模式通常会导致设计类的数目增加 设计模式 设计模式 没有25分钱 有25分钱 投入25分钱 退回25分钱 售出糖果 转动曲柄 糖果售謦 糖果数目0 糖果数目=0 发放糖果 创建一个实例变量来持有上述状态 状态 发生动作 每一个状态用一个不同整数代表 表示当前状态 糖果数量 将上述的发生动作整合起来: 发现: ①通过改变对象内部的 状态来帮助对象控制自己 的行为。 ②当增加新的状态,这份 代码不易扩展。 所有状态 这些动作变得很容易实现,只是委托到当前状态 使用组合通过简单引用不同状态对象来造成类改变假象。 ①上下文(Context):是一个类,含有抽象状态State声明的变量,可以引用 任何具体状态类的实例.。GumballMachine ②抽象状态(State):是一个抽象接口或抽象类,定义了所有具体状态的 共同方法。 ③具体状态(Concrete State):实现抽象状态State的类 //该状态表示获奖得到两颗糖果 实现机会随机数,增加一个进入WinnerState状态的转换,顾客会从状态 HasQuarterState中转动曲柄: 决定顾客是否赢了,10%机会 增加一个随机数产生器 给糖果机增加新状态 * *

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档