面向对象的六大原则

1. 职责单一原则

定义:

每个类的功能尽量单一,例如不能既有网络连接功能,又有UI渲染功能。但是单一职责的具体界定需要程序员自己来定夺。

怎么实现:

会一起变化的东西放在一起,变化原因不同的东西拆开

2. 开闭原则
定义:

一句话:"对扩展开放,对修改关闭"。当需要新增一个功能时,尽量通过新增代码来实现,而不是修改旧的代码

怎么实现:

面向接口/抽象编程

使用策略模式、装饰器、责任链等让新逻辑插拔式扩展

3. 里氏替换原则
定义:

一句话:子类必须能替换父类,并且不会发生正确性错误

怎么实现:

子类不能随意改写覆盖父类的功能

4. 依赖倒置原则
定义:

细节依赖抽象,抽象不依赖细节。高层模块不依赖低层模块,二者均依赖抽象

怎么实现:

依赖接口实现

使用构造函数注入低层模块对象,而不是在类里生成低层模块对象

5. 接口隔离原则
定义:

接口做的尽量细致,不要逼客户端依赖它不需要的方法

怎么实现:

拆成多个细致的接口

接口组合使用而不是继承

6. 迪米特原则
定义:

一个对象应该少了解其他对象的内部结构,只和直接发生关系的对象通信

怎么实现:

给中间对象提供合适的封装方法

让对象自己做自己的事,不要到处扒"内部结构"

记忆口诀(好背)

  • S:单一职责(别啥都干)

  • O:开闭(加功能加类,不改老代码)

  • L:里氏替换(子类别把父类承诺打破)

  • I:接口隔离(接口小而专)

  • D:依赖倒置(依赖抽象不依赖实现)

  • LoD:最少知道(别串门扒结构)

相关推荐
景同学1 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟2 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白2 小时前
黑马八股--spring框架学习
java·学习·spring
唐青枫3 小时前
Java Picocli 实战详解:用注解写出好用的命令行工具
java
X-⃢_⃢-X3 小时前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
减瓦3 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生
杨运交3 小时前
[053][核心模块]Java枚举缓存与ORM集成实践
java·开发语言·缓存
繁星蓝雨3 小时前
C++设计原理——异常处理
java·c++·异常处理·noexcept·throw·try catch
BerrySen1784 小时前
一个Java项目改成AI流程后,最难的部分完全变了
java·大数据·人工智能·可观测性·大模型应用开发·工程思维
程序猿秃头之路4 小时前
DDD 系列:DTO、VO、DO、Entity 怎么区分
java·ddd·领域驱动设计