SOLID原则

目录

  • 单一责任原则
  • 开放封闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 综上

在复习的时候重温了一下SOLID原则,感觉在实验的基础上又有了更深的认识。

单一责任原则

一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中,即又定义有且仅有一个原因使类变更。
如果某个类负责两个不同的职责A、B,当A需求发生改变而需要修改该类时,有可能会导致原本运行正常的B功能发生问题,也就不符合软件构造的正确性原则了。

开放封闭原则

即对扩展开放,对修改关闭。
一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求。
举个例子,一开始做了普通计算器程序,突然添加新需求,要再做一个程序员计算器,这时不应该修改普通计算器内部,应该使用面向接口编程,组合实现扩展。

里氏替换原则

一个对象在其出现的任何地方,都可以用子类实例做替换,并且不会导致程序的错误。
就像PPT上的例子那样:正方形不是长方形的子类。
正方形多了一个RI——长和宽相等。这时,对正方形类设置不同的长和宽,计算面积的结果是最后设置那项的平方,而不是长*宽,从而发生了与长方形不一致的行为。如果程序依赖了长方形的面积计算方式,并使用正方形替换了长方形,实际表现与预期不符。

接口隔离原则

接口隔离原则表明客户端不应该被强迫实现一些他们不会使用的接口,应该把胖接口中的方法分组,然后用多个接口替代它,每个接口服务于一个子模块。

ISP的主要观点如下:

  • 一个类对另外一个类的依赖性应当是建立在最小的接口上的。ISP可以达到不强迫客户(接口的使用方法)依赖于他们不用的方法,接口的实现类应该只呈现为单一职责的角色(遵循SRP原则)
  • ISP还可以降低客户之间的相互影响,即当某个客户要求提供新的职责(需要变化)而迫使接口发生改变时,影响到其他客户程序的可能性最小。
  • 客户端程序不应该依赖它不需要的接口方法。客户端需要什么接口就是提供什么接口,把不需要的接口剔除,这就要求对接口进行细化,保证其纯洁性。

依赖倒置原则

抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对抽象(接口)编程,而不是针对实现细节编程。
开闭原则(OCP)是面向对象设计原则的基础也是整个设计的一个终极目标,而依赖倒置原则(DIP )则是实现OCP原则的一个基础,换句话说开闭原则(OCP)是你盖一栋大楼的设计蓝图,那么依赖倒置原则就是盖这栋大楼的一个钢构框架。

综上

没有程序能完全遵守SOLID原则,甚至有些设计模式是违反SOLID原则,而这就涉及到权衡的问题,即如何做才能做到利是否大于弊。

你可能感兴趣的:(SOLID原则)