网站大量收购闲置独家精品文档,联系QQ:2885784924

C设计模式面向对象设计原则.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C设计模式面向对象设计原则

合成复用原则 合成复用原则分析 继承复用:实现简单,易于扩展。破坏系统的封装性;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;只能在有限的环境中使用。(“白箱”复用 ) 组合/聚合复用:耦合度相对较低,有选择性地调用成员对象的操作;可以在运行时动态进行,新对象可以动态地引用与成员对象类型相同的其他对象。(“黑箱”复用 ) 合成复用原则 合成复用原则实例 实例说明 某软件公司开发人员在初期的CRM系统设计中,考虑到客户数量不多,系统采用Access作为数据库,与数据库操作有关的类,例如CustomerDAO类等都需要连接数据库,连接数据库的方法GetConnection()封装在DBUtil类中,由于需要重用DBUtil类的GetConnection()方法,设计人员将CustomerDAO作为DBUtil类的子类,初始设计方案结构如图2-7所示。 图2-7 初始设计方案结构图 随着客户数量的增加,系统决定升级为Oracle数据库,因此需要增加一个新的OracleDBUtil类来连接Oracle数据库,由于在初始设计方案中CustomerDAO和DBUtil之间是继承关系,因此在更换数据库连接方式时需要修改CustomerDAO类的源代码,将CustomerDAO作为OracleDBUtil的子类,这将违背开闭原则。当然也可以直接修改DBUtil类的源代码,这同样也违背了开闭原则。 现使用合成复用原则对其进行重构。 合成复用原则 合成复用原则实例 实例解析 迪米特法则 迪米特法则定义 迪米特法则又称为最少知识原则(Least Knowledge Principle, LKP) 迪米特法则:每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 Law of Demeter (LoD): Each unit should have only limited knowledge about other units: only units closely related to the current unit. 迪米特法则 迪米特法则分析 迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目 迪米特法则要求一个软件实体应当尽可能少地与其他实体发生相互作用 应用迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系 迪米特法则 迪米特法则分析 不要和“陌生人”说话 (Dont talk to strangers.) 只与你的直接朋友通信 (Talk only to your immediate friends.) (1) 当前对象本身(this) (2) 以参数形式传入到当前对象方法中的对象 (3) 当前对象的成员对象 (4) 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友 (5) 当前对象所创建的对象 任何一个对象,如果满足上面的条件之一,就是当前对象的“朋友”,否则就是“陌生人” 在应用迪米特法则时,一个对象只能与直接朋友发生交互,不要和“陌生人”发生直接交互,这样做可以降低系统的耦合度,一个对象的改变不会给太多其他对象带来影响 迪米特法则 迪米特法则分析 迪米特法则要求在设计系统时,应该尽量减少对象之间的交互 如果两个对象之间不必彼此直接通信,那么这两个对象就不应该发生任何直接的相互作用 如果其中一个对象需要调用另一个对象的方法,可以通过“第三者”转发这个调用 通过引入一个合理的“第三者”来降低现有对象之间的耦合度 迪米特法则 迪米特法则分析 应用迪米特法则注意点: 在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大影响 在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限 在类的设计上,只要有可能,一个类型应当设计成不变类 在对其他类的引用上,一个对象对其他对象的引用应当降到最低 迪米特法则 迪米特法则实例 实例说明 某软件公司所开发CRM系统包含很多业务操作窗口,在这些窗口中,某些界面控件之间存在复杂的交互关系,一个控件事件的触发将导致多个其他界面控件产生响应。例如,当一个按钮(Button)被单击时,对应的列表框(List)、组合框(ComboBox)、文本框(TextBox)、文本标签(Label)等都将发生改变,在初始设计方案中,界面控件之间的交互关系可以简化为如图2-9所示的结构。 图2-9 初始设计方案结构图 在图2-9中,由于界面控件之间的交互关系复杂,导致在该窗口中增加新的界面控件时需要修改与之交互的其他控件

您可能关注的文档

文档评论(0)

shenland + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档