单一职责原则+开放-封闭原则+依赖倒转原则+里氏代换原则【设计模式】【学习总结】

来源:互联网 发布:蛋白诱导表达条件优化 编辑:程序博客网 时间:2024/04/29 07:56

以下内容多摘抄自《大话设计模式》,也有些来自网络,仅作学习备忘用。

单一职责原则(SRP)

Single Responsibility Principle

就一个类而言,应该仅有一个引起它变化的原因。

[why]:如果一个类承担过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

软件设计真正要做的,就是发现职责并把那些职责相互分离。

开放-封闭原则(OCP)

Open-Closed Principle

是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)。

面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

依赖倒转原则

  • 高层模块不应该依赖低层模块。两个都应该依赖抽象。
  • 抽象不应该依赖细节,细节应该依赖于抽象。(针对接口编程,不要针对实现编程)

谁也不需要依赖谁,除了约定的接口,大家都可以灵活自如。

依赖倒转可以说是面向对象设计的标志,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或接口,那就是面向对象的设计,反之那就是面向过程的设计。

里氏代换原则(LSP)

Liskov Substitution Principle

任何基类可以出现的地方,子类一定可以出现。子类型必须能够替换掉它们的父类型。

根据此原则,在面向对象的设计中,企鹅类是不能继承鸟类的,因为鸟会飞,企鹅不会。注意这里与自然科学中的分类是有别的。自然科学强调事实真理,面向对象的设计中不完全与其相同。像这里,我们必须保证里氏代换原则成立,才使继承复用成为了可能。只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能在父类的基础上增加新的行为(此处可以与依赖倒转原则联系起来)。

由于子类型的可替换性,使得使用了父类类型的模块在无须修改的情况下就可以扩展(此处可以与开放-封闭原则联系起来)。


// last update : 2015/5/28
// sfg1991@163.com
// 2015/5/28

0 0
原创粉丝点击