开闭原则(Open-closed principle)
在软件设计、编码过程中有几个基本原则即SOLID原则,学习理解能够帮忙我们写出更健壮的代码。SOLID是五个基本原则的首字母。这五个原则如下:
Single responsibility
Open–closed
Liskov substitution
Interface segregation
Dependency inversion
此篇来学习一下开闭原则(Open–closed responsibility)
开闭原则即对扩展开放对修改关闭。即在不改变本身代码的情况下其行为能扩展。我们在写代码的时候,一定不要着急开始写,而要多思考可能面临的问题,在需求可能改动的情况下,如何尽量减少代码的改动,而是通过扩展的方式实现?
比如Spring框架里面的BeanPostProcessor,如果想在bean初始化之后做一些事情,我们不需要去修改spring的代码,或者我们的代码,而是使用spring提供的扩展方法很方便的实现自己的特殊需求。
再举个例子,比如策略模式,比如我们有一个网站,用户可以用手机号,邮箱等方式注册,注册后我们可以根据不同的类型发送不同的消息,告知用户已经成功注册。如果把逻辑都写到一块
class AccountSignIn {public void signIn() {// 注册的逻辑// 通知的逻辑String type = "手机号";// or String type = "邮箱";notice(type);}void notice(String type) {if (type.equals("手机号")) {}if (type.equals("邮箱")) {}if (type.equals("other")) {}}
}
这样的代码就很不方便扩展,如果有其他的通知需要可能就要重写notice方法,我们可以通过策略模式,让代码能更方便的扩展。
class AccountSignIn {INotice notice;AccountSignIn(INotice notice) {this.notice = notice;}public void signIn() {// 注册的逻辑// 通知的逻辑notice.notice();}
}interface INotice {void notice();
}class EmailNotice implements INotice {public void notice() {}
}class SMSNotice implements INotice {public void notice() {}
}
这样就可以很方便的扩展了。我们在写代码的时候一定要多考虑一下扩展性方面的问题,防止代码越写越杂乱,越难理解、维护。
参考:
https://www.cnblogs.com/shijianchuzhenzhi/p/12941207.html
开闭原则(Open-closed principle)相关推荐
- 开闭原则(Open-Closed Principle,OCP)
2 开闭原则(Open-Closed Principle,OCP) 2.1 什么是开闭原则 开闭原则是面向对象设计中"可复用设计"的基石,是面向对象设计中最重要的原则之一, ...
- “开-闭”原则(Open-Closed Principle)
1.1 "开-闭"原则(Open-Closed Principle) 1.1.1 作用 它指导我们如何提高代码的可扩展性! 1.1.2 定义 (1)Open(Open for ...
- Java设计模式之开闭原则(Open-Closed Principle)
Software entities like classes, modules and functions should be open for extension but closed for mo ...
- java开闭原则 例子_解析Java编程中设计模式的开闭原则的运用
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- 设计模式之禅之开闭原则
声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 开闭原则(Open Closed Principle):对扩展开放,对修改关闭 1.定义: 软件实 ...
- 设计模式七大原则——开闭原则
1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...
- java开闭原则 例子_Java设计原则—开闭原则(转)
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- 学习设计模式 - 六大基本原则之开闭原则
设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...
- 设计原则(一)开-闭原则(OCP)
经典力学的基石是牛顿三大定律.而面向对象的可复用设计的第一块基石,便是所谓的"开-闭"原则(Open-Closed Principle,常缩写为OCP). 一.什么是开闭原则 &q ...
- 关于Java面向对象程序设计原则之一——开闭原则的思考与分享
整理日期:2022-05-27 目录 一.开闭原则 二.为什么使用开闭原则 三.如何在程序设计中体现开闭原则 一.开闭原则 开闭原则(Open-Closed Principle, OCP)是指一个软件 ...
最新文章
- amaze ui各个模块简单说明
- nginx telnet sshd
- PHP7CMS 无条件前台GETSHELL
- [Jarvis OJ - PWN]——Tell Me Something
- asp.net webform 局部发布更新
- oracle怎么通过sid确定表名,如何获取Oracle的SID列表
- Android 实践项目开发二
- linux xfs文件恢复,Linux 文件恢复(XFS EXT4)
- 多用户远程(RDP Wrapper)安装及使用步骤
- 史上最全VPS+云服务器运维面板汇总(收藏)
- 字节码插桩技术---Transform配合ASM进行插桩(三)
- 基于LDC1000的自动循迹小车
- 日本公司推出第一款MR购物应用,今秋上市
- 微信公众号开发之用户分组
- 【23届秋招总结系列】一个普本23届小学弟的秋招总结,上岸金山云开发(云计算方向)
- Unity图片序列帧动画
- Packet Tracer - 配置初始路由器设置
- [js倒计时]指定对应时间自动倒计时
- 【C语言】链表中倒数第k个结点【牛客】
- 皮克斯华人CG老鸟深圳创业!低代码实现好莱坞大片特效,北大图形学大牛:绝代双骄CG产业聚首...