当前位置: 首页 > article >正文

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

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

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

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

        例子

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

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

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

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

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

        代码

整体结构

接口

         用于制定规范

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

实现类

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

扩展类

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

测试类

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

代码连接:

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


http://www.kler.cn/a/386422.html

相关文章:

  • 01:(手撸HAL+CubeMX)时钟篇
  • React的基础API介绍(二)
  • 封装el-menu
  • 代码 RNN原理及手写复现
  • 使用elementUI实现表格行拖拽改变顺序,无需引入外部库
  • 超子物联网HAL库笔记:定时器[外部模式]篇
  • Leetcode 同构字符串
  • 美团代付微信小程序系统 read.php 任意文件读取漏洞复现
  • # SpringMVC学习
  • nginx代理出现的请求头中获取不到acc_token问题
  • 从零开始训练一个大语言模型需要多少天?
  • Python学习从0到1 day26 第三阶段 Spark ① 数据输入
  • 论文阅读(三十五):Boundary-guided network for camouflaged object detection
  • 设置JAVA以适配华为2288HV2服务器的KVM控制台
  • 游戏中Dubbo类的RPC设计时的注意要点
  • 2024系统架构师---上午综合题真题(重复考试知识难点)
  • 【LeetCode】【算法】279. 完全平方数
  • 【GeoJSON在线编辑平台】(1)创建地图+要素绘制+折点编辑+拖拽移动
  • 图像格式中的 stride 和 pix stide
  • SDL 播放PCM
  • 国内读新加坡公立大学在职博士是一种怎样的体验?还中文授课
  • Python学习从0到1 day27 第三阶段 Spark ③ 数据计算 Ⅱ
  • Nuxt3之使用lighthouse性能测试及性能优化实操
  • MySQL 中的 `IN`、`EXISTS` 区别与性能分析
  • Kubernetes-编排工具篇-01-Kustomize与Helm对比
  • 安装和运行开发微信小程序