面向对象设计原则之开放闭合原则
面向对象设计原则之开放闭合原则
1,解决的痛点
一个软件总是在随着需求的变化而跟着变化的,没有任何一个软件能够从设计出来就一直保持不变,那就肯定会涉及到增加新功能,如果我们在原基础代码上进行更改,那么必然会对原有功能造成一定的影响。开放闭合原则提出来就是为了解决该问题。也可以理解为,提出该原则是为了降低耦合度。
2,官方讲解
开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的,例如以Liskov替换原则实现最佳的、正确的继承层次,就能保证不会违反开放封闭原则。
关于开放封闭原则,其核心的思想是:
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
因此,开放封闭原则主要体现在两个方面:
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
3,个人理解
开放闭合,即就是抽象出一个接口,该接口有将来开发的所有的功能都会有的一个方法,每一个功能必然会实现这个方法。那么每一个功能必然都会继承该接口。
看图,我们通过一个接口,确定了一些所有功能都必然会写的一个方法。下面的功能都继承该接口。如果我们需要增加新的功能那么我们就只需要在已有的功能后面再增加一个类继承于该接口,这样就不会对以前的代码进行任何的更改就可以进行新的功能的增加而不需要更改以前的代码,也不会影响到以前的功能。如果以前的功能有一些暂时的变化或者是有所增加都可以对相应的功能进行扩展或者是对某些功能进行重写就可以完成一个功能的更新或者是暂时的更改而不需要去更改上面的代码! 也不会对需要用到这个功能的任何一个部件造成任何的影响。
————————————————
版权声明:本文为CSDN博主「忄風風」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43685891/article/details/108369273
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-06-08 记一些不错的知识博客
2020-06-08 redis入门到精通系列(九):redis哨兵模式详解
2020-06-08 redis入门到精通系列(八):redis的高可用--主从复制详解
2020-06-08 redis入门到精通系列(七):redis高级数据类型详解(BitMaps,HyperLogLog,GEO)
2020-06-08 redis入门到精通系列(六):redis的事务详解
2020-06-08 redis入门到精通系列(五):redis的持久化操作(RDB、AOF)
2020-06-08 redis入门到精通系列(四):Jedis--使用java操作redis详解