首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式原则详解

2012-10-06 
设计模式原则详解设计模式遵循的基本原则开闭原则OCP里氏代换原则LSP依赖倒转原则DIP接口隔离原则ISP合成/

设计模式原则详解

设计模式遵循的基本原则

    开闭原则OCP里氏代换原则LSP依赖倒转原则DIP接口隔离原则ISP合成/聚合复用原则CARP迪米特法则LoD

1、开闭原则OCP:对扩展开放,对修改关闭

??? 解决问题的关键在于抽象化。在预见可能变化的前提下,给出一个一劳永逸、不再更改的抽象设计,此设计允许有无穷无尽的行为在实现层被实现。

??? 优点:

    通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,是变化中的软件系统有一定的适应性和灵活已有的软件模块,特别是最重要的抽象层模块不能再修改,这就是变化中的软件系统有一定的稳定性和延续性

2、里氏代换原则LSP :基类可出现,则子类可出现,反之不成立

??? 里氏代换原则是考量模型中对象之间是否符合继承复用的核心原则

3、依赖倒转原则DIP :依赖于抽象,不要依赖于具体

??? 目标:解耦,不让具体实现层的变化造成更多的影响
??? 优点:逻辑与实现的充分解耦
??? 缺点:不易实现,有时趋于繁琐——把握稳定性

4、接口隔离原则ISP :多个专门的接口好过一个总接口

??? 整洁——仅从美学角度分析
??? 系统的可维护性得到增强。向客户提供的public接口是一种承诺,一旦提供就很难收回。做为提供方,没人愿意多做承诺。而且一旦服务发生变化,很容易定位受影响的客户端和不受影响的客户端。

5、合成/聚合复用原则CARP:能用合成/聚合就不要用继承

??? 继承的优点

???????? 新的实现容易,超类功能可以通过集成自动进入子类
???????? 修改或扩展继承而来的实现较为容易

??? 继承的缺点
???????? 继承会破坏封装,因为继承会将超类的实现细节暴露给子类——白箱复用
???????? 如果超类的实现发生改变,则子类也不得不改变——牛鞭效应
???????? 从超类继承而来的实现是静态的,无法在运行时间内改变,缺乏灵活性

6、迪米特法则LoD:不要与陌生人说话

??? 别称:LKP(Least Knowledge Principle),最少知识原则——一个对象应当对其他对象有尽可能少的了解,也应当尽量少的被其他对象了解

??? 狭义迪米特:如果两个类不必直接通信则不建立通信,通过第三方转发

????? 广义迪米特:要注意信息的隐藏

?

Spring3的源代码,大量运用了设计模式,而且非常精巧。不得不佩服。DIP,ISP得到了充分地体现。这样的代码,看起来真得是非常舒服……

热点排行