在软件设计、编码过程中有几个基本原则即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)相关推荐

  1. 开闭原则(Open-Closed Principle,OCP)

    2 开闭原则(Open-Closed Principle,OCP) 2.1 什么是开闭原则     开闭原则是面向对象设计中"可复用设计"的基石,是面向对象设计中最重要的原则之一, ...

  2. “开-闭”原则(Open-Closed Principle)

    1.1   "开-闭"原则(Open-Closed Principle) 1.1.1 作用 它指导我们如何提高代码的可扩展性! 1.1.2 定义 (1)Open(Open for ...

  3. Java设计模式之开闭原则(Open-Closed Principle)

    Software entities like classes, modules and functions should be open for extension but closed for mo ...

  4. java开闭原则 例子_解析Java编程中设计模式的开闭原则的运用

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...

  5. 设计模式之禅之开闭原则

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 开闭原则(Open Closed Principle):对扩展开放,对修改关闭 1.定义:    软件实 ...

  6. 设计模式七大原则——开闭原则

    1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...

  7. java开闭原则 例子_Java设计原则—开闭原则(转)

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...

  8. 学习设计模式 - 六大基本原则之开闭原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  9. 设计原则(一)开-闭原则(OCP)

    经典力学的基石是牛顿三大定律.而面向对象的可复用设计的第一块基石,便是所谓的"开-闭"原则(Open-Closed Principle,常缩写为OCP). 一.什么是开闭原则 &q ...

  10. 关于Java面向对象程序设计原则之一——开闭原则的思考与分享

    整理日期:2022-05-27 目录 一.开闭原则 二.为什么使用开闭原则 三.如何在程序设计中体现开闭原则 一.开闭原则 开闭原则(Open-Closed Principle, OCP)是指一个软件 ...

最新文章

  1. amaze ui各个模块简单说明
  2. nginx telnet sshd
  3. PHP7CMS 无条件前台GETSHELL
  4. [Jarvis OJ - PWN]——Tell Me Something
  5. asp.net webform 局部发布更新
  6. oracle怎么通过sid确定表名,如何获取Oracle的SID列表
  7. Android 实践项目开发二
  8. linux xfs文件恢复,Linux 文件恢复(XFS EXT4)
  9. 多用户远程(RDP Wrapper)安装及使用步骤
  10. 史上最全VPS+云服务器运维面板汇总(收藏)
  11. 字节码插桩技术---Transform配合ASM进行插桩(三)
  12. 基于LDC1000的自动循迹小车
  13. 日本公司推出第一款MR购物应用,今秋上市
  14. 微信公众号开发之用户分组
  15. 【23届秋招总结系列】一个普本23届小学弟的秋招总结,上岸金山云开发(云计算方向)
  16. Unity图片序列帧动画
  17. Packet Tracer - 配置初始路由器设置
  18. [js倒计时]指定对应时间自动倒计时
  19. 【C语言】链表中倒数第k个结点【牛客】
  20. 皮克斯华人CG老鸟深圳创业!低代码实现好莱坞大片特效,北大图形学大牛:绝代双骄CG产业聚首...

热门文章

  1. 1818. 绝对差值和
  2. DCDC中电感的计算
  3. C语言用结构体实现串口协议
  4. javaweb mysql毕业生管理系统_javaweb高校毕业生就业管理系统, springmvc+mysql
  5. 2021-2027全球与中国3D 动作捕捉解决方案市场现状及未来发展趋势
  6. 校友全剧透CMU :ME + 转CS + 其他主要项
  7. 工作记录——本周小结
  8. 中债估值 收益率_收债
  9. 37个 safari 快捷键,让Mac网页浏览更方便
  10. 快递首富顺丰王卫的下一站:对抗阿里