简单说说面向对象五大原则

面向对象五大原则

单一职责 SRP

一个类做好一件事,只有一个引起它变化的原因

这个得从 高内聚低耦合 说起

  • 内聚:从功能角度度量模块内的联系,一个好的内聚模块应该恰好只做好一件事,描述的是模块内的功能联系
  • 耦合:是各个模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度

通常情况下的 单一职责,就是指类只有单一功能,不要为类实现多个功能点

举个例子,比如说实现一个计算器类,那么大家一般会分别实现加减乘除的方法,但是为了保证单一职责,所以就将加减乘除分别封装成类然后继承于计算器类,后面要新增功能的时候就直接继承即可。

开放封闭原则 OCP

软件实体应该是可扩展且不可修改的 ==对扩展开放,对修改封闭==

  • 对扩展开放:当有新的需求变化,可以对现有代码扩展
  • 对修改封闭:意味着类一旦设计完成,就可以独立完成其工作 ,而不要对其进行任何尝试的修改

(面向接口/抽象类编程)

里氏替换原则 LSP

子类必须能够替换其基类

接口隔离原则 ISP

使用多个小的专门的接口,不要使用一个大的总接口.接口应该内聚,避免"胖"接口,一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法造成接口污染.

将胖接口拆分为多个具体的定制化方法,使得客户端仅仅依赖于他们调用的实际方法,避免依赖用不到的方法.

分离接口的手段:

  • 委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖;但是会增加系统的开销
    • 例子:Controller层和Service层,以及自己实现的RedisUtil等等
  • 多重继承分离,通过接口多继承来实现客户的需求

依赖倒置原则 DIP

程序要依赖于抽象接口,而不是具体实现

  • 微信或QQ扫一扫

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

目录