设计模式-七个基本原则之一-开闭原则 + SpringBoot案例

开闭原则:(SRP) 面向对象七个基本原则之一

  • 对扩展开放:软件实体(类、模块、函数等)应该能够通过增加新功能来进行扩展。
  • 对修改关闭:一旦软件实体被开发完成,就不应该修改它的源代码。

要看实际场景,比如组内大佬高级程序员开发的公用方法sdk很多人引用,这时候肯定要去继承然后实现,如果是自己开发,则没有必要这样继承,看实际业务需求。

例子

比如有一个需求,需要实现计算圆形面积。

标准SDK只提供了Π=3.14D.

A程序员觉得SDK的精度已经满足了他的需求.

B程序员需要Π的后33位.

那么B程序员应该继承标准SDK自己实现而不是傻乎乎的跑去修改SDK.

代码

整体结构
接口

用于制定规范

这里的两个接口分别实现计算圆形和矩形

实现类

用于实现接口从而实现单一职责原则。而不是把所有代码写在一个类里面成一坨。

扩展类

即当前"标准" SDK无法满足我们的需求:需要足够精度 | 但是又不能直接修改标准 则使用扩展满足开闭原则

测试类

这里采用了Spring boot,如果没有学过的话则自己new一下即可。

代码连接:

设计模式: 设计模式的七大原则以及所有设计模式的案例

相关推荐
2401_868534788 小时前
网规备考_2.4 路由协议
c++·设计模式
cpp_learner9 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
c++·设计模式
码匠许师傅9 小时前
【设计模式精讲】23.备忘录模式(Memento)
c++·设计模式·软件工程·uml·备忘录模式
新知图书1 天前
第8章 多智能体协同
人工智能·设计模式·智能体
京师20万禁军教头1 天前
39面向对象(高级)-设计模式
java·开发语言·设计模式
新知图书1 天前
3.5 智能体设计模式1:反应式智能体与自动导航案例
人工智能·设计模式·智能体
码匠许师傅1 天前
【设计模式精讲】21.迭代器模式(Iterator)
c++·设计模式·rpc·迭代器模式·软件工程·uml
Carl_奕然2 天前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
cfm_29142 天前
Spring核心设计模式
java·spring·设计模式
码匠许师傅3 天前
【设计模式精讲】15.享元模式(Flyweight)
c++·设计模式·享元模式·uml