模式与原则.pdfVIP

  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文档。上传文档
查看更多
模式与原则

模式和原则 设计模式介绍 “模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方 案的核心。” 这是关于模式最经典的定义,作者是建筑大师Christopher Alexander 。如果是第一次看 到这句话,多数人会觉得有些抽象难懂。其实“模式”两个字只是一个代号,就像我的英文 名字叫 Justin ,如果我改叫 Tom 也没什么问题,只是我更喜欢 Justin 这个名字,所以从 Christopher 开始,有了“模式”这个词,人们也都把关于“重复发生的问题的描述和解决办 法”统称为模式。 “模式”这个词是不局限于软件开发行业的,它几乎无处不在,它其实就是一种经验的 积累,就象大多数人的教育经历都是从小学到初中再到高中再到大学,这也是一种模式,是 中国的教育模式;现在越来越火的出国热,也是另一种模式:海外留学模式。因为GOF 的 《设计模式:可复用面向对象软件的基础》一书描述的23 种经典设计模式,奠定了模式在 软件行业的地位,从此人们提到“设计模式”就是默指“面向对象设计模式”,但是如前文 所述,模式绝对不局限于软件行业,即使在软件行业,也不局限于GOF 描述的23 种设计模 式,例如最著名的Martin Flower 的《企业架构模式》,还有我们常用的MVC 、IOC 等架构 模式。 因为模式是一种经验的积累和总结,所以通过模式,我们可以站在巨人的肩膀上去思考 问题、解决问题,熟练使用设计模式可以提高我们的工作效率,改善产品质量,最终带来经 济效益。因此对于任何想开发出灵活高效、健壮的软件产品的个人或团体,熟练掌握并正确 使用设计模式都是必须掌握的基本技能。 比设计模式更重要:GRASP (职责分配原则) 要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的 一种高效、灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地, 否则一切都是空谈,那么类和对象是从那冒出来的呢?这时就需要比23 种设计模式更重要 更经典的GRASP 模式登场了,嘿嘿,原来这才是老大! GRASP(General Responsibility Assignment Software Patterns) ,中文名称为“通用职责分 配软件模式”,GRASP 一共包括9 种模式,它们描述了对象设计和职责分配的基本原则。也 就是说,如何把现实世界的业务功能抽象成对象,如何决定一个系统有多少对象,每个对象 都包括什么职责,GRASP 模式给出了最基本的指导原则。初学者应该尽快掌握、理解这些 原则,因为这是如何设计一个面向对象系统的基础。可以说,GRASP 是学习使用设计模式 的基础。 1. Information Expert (信息专家) 信息专家模式是面向对象设计的最基本原则,是我们平时使用最多,应该跟我们的 思想融为一体的原则。也就是说,我们设计对象(类) 的时候,如果某个类拥有完成 某个职责所需要的所有信息,那么这个职责就应该分配给这个类来实现。这时,这 个类就是相对于这个职责的信息专家。 例如:常见的网上商店里的购物车(ShopCar),需要让每种商品(SKU)只在购物车内出 现一次,购买相同商品,只需要更新商品的数量即可。如下图: 针对这个问题需要权衡的是,比较商品是否相同的方法需要放到那里类里来实现呢? 分析业务得知需要根据商品的编号(SKUID)来唯一区分商品,而商品编号是唯一存 在于商品类里的,所以根据信息专家模式,应该把比较商品是否相同的方法放在商 品类里。 2. Creator (创造者) 实际应用中,符合下列任一条件的时候,都应该由类A来创建类B,这时A是B的 创建者: a. A是B的聚合 b. A是B的容器 c. A持有初始化B的信息(数据) d. A记录B的实例 e. A频繁使用B 如果一个类创建了另一个类,那么这两个类之间就有了耦合,也可以说产生了依 赖关系。依赖或耦合本身是没有错误的,但是它们带来的问题就是在以后的维护 中会产生连锁反应,而必要的耦合是逃不掉的,我们能做的就是正确地创建耦合 关系,不要随便建立类之间的依赖关系,那么该如何去做呢?就是要遵守创建者 模式规定的基本原则,凡是不符合以上条件的情况,都

文档评论(0)

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

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

1亿VIP精品文档

相关文档