-精选版第8章 设计模式1 - 概述.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文档。上传文档
查看更多
-精选版第8章 设计模式1 - 概述.ppt

需要解决什么问题? * 考虑一个软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,怎么创建不同按钮的对象更方便呢? 解决方案 — 简单工厂模式 * 创建这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象 应用实例 — 权限管理系统 * 系统根据存储在数据库中的用户权限等级(以整数形式存储),创建不同等级的用户对象,并实现不同权限的操作 应用实例 — 权限管理系统 * public abstract class User { public void sameOperation() { System.out.println(修改个人资料!); } public abstract void diffOperation(); } public class Manager extends User { public Employee() { System.out.println(“创建经理对象!); } public void diffOperation() { System.out.println(“经理拥有创建和审批假条权限!); } } 应用实例 — 权限管理系统 * public class UserFactory { public static User getUser(int permission) if(0==permission) return new Employee(); else if(1==permission) return new Manager(); else return null; } 应用实例 — 权限管理系统 * public class Client { public static void main(String args[]) { User user; int permission = findPermission(zh,123); user=UserFactory.getUser(permission); user.sameOperation(); user.diffOperation(); } } 方案的评价 * 适用场景:负责创建的对象比较少,不会造成工厂方法中的业务逻辑太过复杂;客户端只知道传入工厂类的参数,对于如何创建对象不关心 优点:将对象的创建和对象本身业务处理分离,降低系统的耦合度;通常实现为类静态方法,通过类名直接调用,非常方便,而且只需要传入一个简单的参数即可 缺点:简单工厂类集中了所有产品的创建逻辑,一旦不能正常工作,整个系统都要受到影响;增加了类的个数,且一旦添加新对象就得修改创建逻辑,对象较多时可能造成创建逻辑过于复杂,不利于系统的扩展和维护 设计模式的要素及描述方式 * 设计模式的四要素 模式名称(pattern name) 它用一两个词来构成助记名 模式的目的/问题(problem) 描述了应该在何时使用模式,解释了设计问题和问题存在的前因后果,以及使用模式必须满足的一系列先决条件 解决方案(solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式,因为模式可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合来解决这个问题 效果(consequences) 描述了应用效果及使用模式应权衡的问题(限制和约束因素) * 设计模式的描述方式 * 设计模式 模式名和分类 结构 实现 别名 意图 动机 适用性 协作 参与者 效果 代码示例 已知应用 相关模式 设计模式的描述方式 * 模式名和分类:模式名简洁地描述了设计模式的本质 别名:模式的其他名称 意图:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题? 动机:说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景 适用性:什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?如何识别这些情况? 结构:采用对象建模技术对模式中的类进行图形描述 参与者:指设计模式中的类及对象以及它们各自的职责 设

文档评论(0)

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

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

1亿VIP精品文档

相关文档