面向对象设计的7大原则

本文详细解读了面向对象设计的七大原则:开闭原则、单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和合成复用原则,强调了这些原则在提高软件可维护性和复用性中的重要性。

背景

对于我们后端来说,平时大部分时间都在使用面向对象语言来设计软件系统。对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。像我们平时接触的23种设计模式就是以面向对象七大原则为基础进行设计的。所以对面向对象设计的七大原则的学习有助于提高我们的设计水平,使我们设计的软件系统有较高的可维护性和可复用性。今天呢,我会通过具体案例,深入浅出精讲面向对象设计七大原则,让大家彻底领悟设计背后的思想。

面向对象的设计原则(7大原则)

开闭原则:软件实体应当对扩展开放,对修改关闭
依赖倒置原则:面向接口编程,依赖于抽象而不依赖于具体
单一职责原则:尽量原子化,一个类只做它该做一件事
接口隔离原则:接口负责专门的事情 跟微服务很类似
迪米特原则(最少知道原则):你不让知道 尽量不要知道 private 权限设计(低耦合)
里式替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能,子类可以代替父类
合成复用:尽量组合、聚合 不要继承
总结
1、开闭原则: 是总纲,告诉我们要对扩展开放,对修改关闭;
2、里氏替换原则: 告诉我们不要破坏继承体系;
3、依赖倒置原则:告诉我们不要破坏继承体系;
4、单一职责原则: 告诉我们实现类/方法要职责单一;
5、接口隔离原则: 告诉我们在设计接口的时候要精简单一;
6、迪米特法则:告诉我们要降低耦合度;
7、合成复用原则:告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用![在这里插入图片描述

详解

开闭原则

对扩展开放,对修改封闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。

单一职责原则

不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。
里氏替换原则:任何基类可以出现的地方,子类一定可以出现。

里氏替换原则

是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。

依赖倒转原则

面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

接口隔离原则

每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

迪米特法则

又叫最少知道原则,为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。也就是说一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

合成复用原则

合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值