Jester Zhu

从学习中得到乐趣,从乐趣中得到灵感,从灵感中创造真知。Think well,just do it.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

可重用的软件开发经验-设计模式(基本概念)

Posted on 2012-01-18 19:36  Jester Zhu  阅读(3107)  评论(2编辑  收藏  举报

  现如今,设计模式已经较前两年失去了一些关注度和热度。人们已经把目光投向那些革命性的高科技产品和技术,诸如:iPhone,iPad,云计算,云平台,HTML5等等。但是我认为,不管时间如何变化,软件设计思想永远随着时间推移而被人们继承和发扬光大。

  生活中的很多经验,都是历经风雨沧桑,被人们所接受认知并流传至今。比如:“磨刀不误砍柴工”,“织网捕鱼”,“是骡子是马,拉出去遛遛”等。不管咋样,本质思想是不变的。设计模式也是这样,本质就是那些成功软件设计师们的宝贵经验,是经过大量实践,总结归纳来的。既然生活经验可以积累继承,那设计模式也可以在程序设计和开发方面供我们使用。

  那什么是设计模式?我们不需要那些抽象概念,只要记住是一种解决问题的思路,是复杂问题的简单解决方法就可以了。这只是宏观上对他进行说明。具体说就是:设计模式是对于在某种环境下软件设计问题上的可重用的解决方案,目的就是要充分利用已有的软件开发经验,解决不同问题。在软件开发设计的时候我们也是不断思考,实践,归纳总结得到一种行之有效的方法,遇到具体问题,拿过来套用把问题解决掉。

  模式不是发明与创造,而是来自我们日常设计开发中的发现与总结,是一种实践经验的积累,最终促使我们走向成熟。

  设计模式种类很多,包括分布式编程模式,用户界面模式,数据模型模式三大类。目前比较流行的是面向对象设计模式GoF(Gang of Four的缩写)模式,翻译出来比较邪恶“四人帮”,另一个是GRASP(General Responsibility Assignment Software Pattern)称为通用职责分配软件模式。

  GRASP与其说他是模式,不如说他是原则和设计要求。他是干啥的?引用一段文档上的话很贴切,“GRASP的核心是自己干自己的事,自己只干自己的事,也就是职责分配和实现高内聚。用来解决面向对象设计的一些问题”。

  在OOD中GRASP包括九大设计原则:

  1. 低耦合(Low Coupling)
  2. 高内聚(High Cohesion)
  3. 信息专家(Information Expert)
  4. 创建者(Creator)
  5. 控制器(Controller)
  6. 多态(Polymorphism)
  7. 纯虚构(Pure Fabrication)
  8. 间接(Indirection)
  9. 受保护变化(Protected Variation)

  GoF模式,众所周知包括23种设计模式。

  •  根据目的准则分类
    1. 创建型(Creational)
    2. 结构型(Structural)
    3. 行为型(Behavioral)
  • 根据范围准则分类
    1. 类模式
    2. 对象模式

  GRASP原则着重考虑设计类的原则及如何分配类的功能,而GoF模式则着重考虑设计的实现、类与类的交互及软件质量。所以GoF模式是符合GRASP原则的面向对象设计模式。