设计模式之我见..doc

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

设计模式之我见 专 业: 软件工程 班 级: 09级软件工程 学 号: 091164 姓 名: 指导教师: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。敏捷开发人员不会对一个庞大的预先设计应用那些原则和模式,而是在一次次的选代中,力图使代码以及代码所表达的设计保持干净。 一、设计模式的原则 ??? 设计模式是为了重用代码,增加可维护性。它的原则有: ??? 1.开闭原则:对修改关闭,对扩展开放。 ???????? 个人理解:对于经常变化功能的扩展,往往可以自动加载一些函数,而不是去改原先的代码块。 ??? 2.替换原则:如果父类含有某个功能的话,如果子父也可以实现。 ??????? 违反该原则时的实现方法:把父子类关系转化成兄弟类关系,拥有共同的祖先。 ??? 3.复用原则(合成/聚合原则):优先使用组合,而不是继承。 ??? 4.依赖倒置原则:实现细节应该依赖于抽象,抽象不依赖于实现细节。 ??????? 实际中,要针对接口编程,而不是具体的类;传递参数,或者在组合聚合的关系中,要使用层次高的类;如果类不稳定,应该创建一个抽象类。 ??? 5.接口隔离原则:使用多个专门的接口比一个接口要好。 ??????? 实现方法:把接口提出父类,该父类的方法该接口的方法。 ??? 6.最少知识原则(低藕合):一个对象应当对其他对象有尽可能少的了了解. ??????? 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 ??? 7.单一职责原则(高内聚):如果你能想到一个类存在多个使其改变的原因,那么这个类就存在多个职责。 ??????? 在OOD中,一个最典型最常用的符合SRP的设计就是分层结构:数据层专门负责数据持久化,处理和数据库(或其他数据源)的交互;业务逻辑层专门负责业务运作逻辑;表现层处理用户界面。如Employee(Store(),CalculateSalary())这样的类就违反了SRP,因为它即处理了持久化层,又执行了业务层,而业务层往往是频繁变化,且变化原因不同。 ??????? 个人感觉:代码块(函数)应该是可以单元测试,可复用的,可理解的。但绝对不是为了精减代码量而写代码。 二、表述格式: ??? 表述一个软件设计模式的格式根据作者的不同,划分和名称等都会有所不同。常用的GoF描述模式的格式大致分为以下这些部分: ??? * 模式名:每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。 ??? * 问题:在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。 ??? * 解决方案:上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式。 ??? * 别名:一个模式可以有超过一个以上的名称。这些名称应该要在这一节注明。 ??? * 动机:该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。 ??? * 适用性:模式适用于哪些情况、模式的背景等等。 ??? * 结构:这部分常用类图与互动图阐述此模式。 ??? * 参与者:这部分提供一份本模式用到的类与物件清单,与它们在设计下扮演的脚色。 ??? * 合作:描述在此模式下,类与物件间的互动。 ??? * 影响:采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。这部分应描述使用本模式后的结果、副作用、与权衡(trade-off) ??? * 实作:这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。 ??? * 示例:简略描绘出如何以编程语言来使用模式。 ??? * 已知应用:业界已知的实作范例。 ??? * 相关模式:这部分包括其他相关模式,以及与其他类似模式的不同。简单工厂模式面向对象的设计的目的之一,就是把责任进行划分,以分派给不同

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档