郑州大学软件学院设计模式讲述.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文档。上传文档
查看更多
郑州大学软件学院设计模式讲述

备忘录模式 P188 Memento?[m?ment??] 意图 在不破坏封装性的前提下,捕获一个对象的内部状态 并在该对象之外保存这个状态 便于以后的恢复 例子 打游戏 打怪之前满满的红、蓝、装备 先保存最佳状态 如果打怪不成功,可以回到这个状态重新开始 红框内细节暴露 客户端 职责过多 用一个备忘录保存状态 红框内细节暴露 客户端 职责过多 用一个备忘录保存状态 缺点 高层有了过多的责任 细节暴露 解决方法: 完整的备忘录模式 Client所关心的 创建备份点,需要的时候恢复 不关心是怎样的备忘录 或者有多个备忘 建立一个管理者来管理备忘录,而客户端只跟管理者联系 例子 回到过去 有个男孩 有一天遇到一个女孩,于是他状态特别好。 之后的相处中,慢慢吵架、冷战。。。 他想回到那天与女孩相遇的状态 抽象工厂 暴力摩托(带武器Weapon) 游戏的两种模式: 普通模式:开摩托、手拿AK47 魔法模式:骑扫把、手拿魔法棒 抽象工厂结构 P57 意图 P58 结构图 例子 穿衣风格 高富帅 衣服 三叶草 食物 哈根达斯 屌丝 衣服 班尼路 食物 食堂 画类图写Main入口 例子 有一个美丽的善良的姑娘 很多的追求者 追求者队伍会不断的变换 追求者最喜欢问的话“你在干嘛” 善良的姑娘不断的回复 困惑 姑娘:不断回复给很多人 追求者:不断询问 解决 用关注的方式 如果boy关注了女孩,则可以通过数据绑定方法获得女孩的状态列表。 女孩会更新自己的状态 public interface IPrincess { void Add(IBoy b); void Remove(IBoy b); void Notify(); public class SnowWhite implements IPrincess { String state; ArrayListIBoy boys=new ArrayListIBoy(); @Override public void Add(IBoy b) { boys.add(b); } @Override public void Remove(IBoy b) { boys.remove(b); } @Override public void Notify() { for(IBoy b:boys){ b.Update(); } } } public interface IBoy { void Update(); } public class Qiang implements IBoy { @Override public void Update() { System.out.println(小强说状态已更改); } public class Cai implements IBoy { @Override public void Update() { System.out.println(状态已更改--Cai); } public class XiaoMing { public static void main(String[] args) { IBoy qiang=new Qiang(); IBoy cai =new Cai(); SnowWhite sw=new SnowWhite(); sw.Add(qiang); sw.Add(cai); sw.state =吃饭; sw.Notify(); } 练习 订阅新闻 有个新闻自动发布系统,用户可以订阅或取消订阅该系统,当该系统有新内容时,会通知给订阅它的用户。 订阅用户可以通过update方法,获得新闻更新。 画类图,写完整代码 public interface INews { void Add(IUser u); void Remove(IUser u); void Notify(); } public interface IUser { void Update(); } public class Seven implements IUser { @Override public void Update() { System.out.println(我的新闻列表已更新---Seven); } } public class News implements INews { public String title,contex; ArrayListIUser myUsers=new ArrayListIUser(); @Override public void Add(IUser u) { myUsers.add

文档评论(0)

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

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

1亿VIP精品文档

相关文档