【有毒的设计模式】单一职责原则、开放-封闭原则、依赖倒转原则、里氏代换原则

版权声明:O.O 欢迎转载,如果我有能力写到原创文章的话~ https://blog.csdn.net/qq_16468937/article/details/50991562

//先来说说废话:

这次就没什么好吐槽了,就是说三个简单的原则,开发过程中需要注意

//正文:

一、单一职责原则(SRP)

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

2.如果一个类承担的职责过多,就等于把这些耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。

  这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏[ASD]

二、开放封闭原则(OCP)

1.软件实体(类、模板、函数)应该可以扩展、但是不可修改[ASD]

  对于扩展开放、对于修改封闭。(多扩展少修改)

2.在我们最初编写代码的时候,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化[ASD]

3.优点在于:可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象。拒绝不成熟的抽象[ASD]

三、依赖倒转原则

1.高层模块不应该依赖低层模块。两个都应该依赖抽象。

2.抽象不应该依赖细节。细节应该依赖抽象。

四、里氏代换原则(LSP)

1.子类型必须能够替换掉它们的父类型

2.只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正地被复用,而子类也能够在父类的基础上增加新的行为

回看OCP,由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下可以扩展

回看依赖倒置原则,依赖倒转原则可以说是面向对象设计的标志,针对抽象编程而不是针对细节编程,这就是面向对象而不是面向过程

//2016/4/6修改:

增加SOLID解释。

SRP The Single Responsibility Principle  单一责任原则
OCP The Open Closed Principle  开放封闭原则
LSP The Liskov Substitution Principle 里氏替换原则
DIP The Dependency Inversion Principle 依赖倒置原则
ISP The Interface Segregation Principle 接口分离原则


再次简述:

单一责任原则: 
当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 

开放封闭原则:
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。

里氏替换原则:
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。

依赖倒置原则
1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 
2. 抽象不应该依赖于细节,细节应该依赖于抽象

接口分离原则 
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。 

猜你喜欢

转载自blog.csdn.net/qq_16468937/article/details/50991562