设计原则在面向对象设计中的演化
软件系统的分析和设计已经走过3个阶段:面向过程、面向对象以及领域驱动的分析和设计。
在这个演进过程中,有些设计原则被赋予了新的含义,有些设计原则不太适用,有些新的设计原则诞生出来。
从面向对象设计的几个原则来看,就能体现出这一点。
模块化原则
模块化原则在面向过程设计中就已经被提出,而在面向对象设计中,模块化更是这种方法天然就支持的,因为面向对象设计首先就要把系统分解成对象,而对象其实就是模块——它是把数据结构和操作紧密地结合在一起所构成的模块。
抽象
抽象是面向过程设计发展到面向对象设计时产生出来的新的设计原则。面向对象方法中的类实际上就是一种抽象数据类型,它的对外开放的公共接口规定了外界可以使用的合法操作符,外部对象可以通过这些操作符可以对类实例中包含的数据进行操作。
信息隐藏
信息隐藏是面向过程设计发展到面向对象设计时产生出来的另一个新的设计原则。在面向对象方法中,通过对象的封装实现信息隐藏。
弱耦合
面向过程设计也强调弱耦合,但在面向对象方法中,耦合又有了新的含义。面向对象中的耦合指的就是不同对象之间相互关联的紧密程度。
面向对象的耦合可分为以下两大类:
交互耦合
交互耦合是指对象之间的耦合通过消息连接来实现。交互耦合要尽可能地松散。而要使交互耦合松散,应该遵守以下准则:一是尽量降低消息连接的复杂程度;二是减少对象发送(或接收)的消息数。
继承耦合
继承耦合是指一般类与特殊类之间的耦合。与交互耦合相反,继承耦合应该尽可能地提高耦合的程度。这是因为继承耦合把基类和派生类结合起来,构成了系统中粒度更大的模块,因此,它们彼此之间应该结合得越紧密越好。而要获得紧密的继承耦合,这些特殊类应该只能是对它继承的一般类的一种具体化。
强内聚
面向对象中的内聚也有了新的含义。在面向对象设计中有以下3种内聚:
服务内聚。一个服务应该完成一个且仅完成一个功能。
类内聚。一个类应该只有一个用途,它的属性和服务都应该是高内聚的。
一般/特殊内聚。一般类和特殊类,应该符合相应的领域知识的结构和继承关系。
可重用
面向对象中的重用也有了新的含义。重用分为采用可重用部件和开发可重用部件两种,在面向对象设计中,采用可重用部件是指使用已有的类(包括公用的类库,及以历史项目中的创建的类);开发可重用部件是指在创建新类时,同时要考虑将来的可重复使用性。
这正是:
设计原则会演化,不同方法各具化
细心观察去理解,因地制宜使用它
参考书目:软件工程(第4版),作者:张海藩 吕云翔,出版社:人民邮电出版社有限公司