【设计原则篇】聊聊开闭原则

开闭原则 其实就是对修改关闭,对拓展开放。

是什么

OCP(Open/Closed Principle)- 开闭原则。关于开发封闭原则,其核心的思想是:模块是可扩展的,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

如何设计开发原则

在实际的业务开发中,我们会经常遇到各种不同的业务需求等,比如在互联网金融中针对不同的用户进行拒贷、不同的策略等,我们需要进行权衡业务进行去进行设计拓展点,大多数的时候基于拓展点都是针对接口、抽象、多态以及设计模式(策略、模板、责任链、状态等)进行实现的 。比如说需要使用消息队列进行发送数据,那么我们可以抽象出一个更高纬度消息队列接口,如果当前使用的是rabblitmq,那么如果切换到kafka中就可以直接实现一套kafka的就可以。

如何在实际开发中应用开闭原则

在实际的工作中使用,业务开发和基础架构开发,两种模式来说的话,其实需要考虑的点不同,业务开发更多的是根据业务短期内需求的变更进行实现需求,而基础架构的话,是需要找到不变的点,然后将其记性抽取出更加通用的基础类库。

但是在实际的开发中,我们需要权衡利弊,也就是为了更好的拓展点,舍弃过度设计,以及在可读性和可拓展上进行取舍。有的地方可以进行为了可拓展性,那么放弃可读性。有的地方为了可读需要放弃拓展性。

总之没有一个放之四海而皆准的方案,需要我们结合具体的场景进行考虑。

总结

任何编码技巧也不如时刻具备拓展意识、抽象意识、封装意识。设计模式、设计原则等都是为了设计出可拓展的代码。

相关推荐
frank006007123 天前
戴尔 17G 服务器 E610 OCP千兆网卡驱动安装
服务器·网络·开闭原则
进击的CJR23 天前
MySQL 8.0 OCP 英文题库解析(十八)
android·mysql·开闭原则
进击的CJR23 天前
MySQL 8.0 OCP 英文题库解析(十四)
android·mysql·开闭原则
进击的CJR23 天前
MySQL 8.0 OCP 英文题库解析(十五)
数据库·mysql·开闭原则
进击的CJR23 天前
MySQL 8.0 OCP 英文题库解析(十九)
数据库·mysql·开闭原则
进击的CJR1 个月前
MySQL 8.0 OCP 英文题库解析(十)
mysql·adb·开闭原则
博睿谷IT99_1 个月前
Oracle OCP与MySQL OCP认证如何选?
mysql·oracle·开闭原则
进击的CJR1 个月前
MySQL 8.0 OCP 英文题库解析(十一)
mysql·adb·开闭原则
小哈里1 个月前
【DBA】MySQL经典250题,改自OCP英文题库中文版(2025完整版)
数据库·mysql·dba·开闭原则·ocp
进击的CJR1 个月前
MySQL 8.0 OCP 英文题库解析(八)
数据库·mysql·开闭原则