博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搬砖方法论:Open Closed Principle(开闭原则又叫OCP原则)
阅读量:4147 次
发布时间:2019-05-25

本文共 481 字,大约阅读时间需要 1 分钟。

开放和关闭到底是什么

我们可以看一下对于开闭原则的定义:

软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的。
或者更简洁:对扩展开放,对修改关闭。

其实我们可以把扩展和修改进行细分。

扩展:增加原来没有的功能。修改:对已经含有的功能做规则上的更改。

这里面的开闭是以功能为单位,比较成功的应用就是插件,插件的增加和删除,并不会干扰系统中的其他插件,插件间也相互独立。

如何确保关闭

要确保关闭需要做到一下两点

  • 抽象化:确定其核心功能

  • 轻量化:减少无关依赖项,做到功能最简。

功能交叉、覆盖面广是很难保证关闭的。

如何做到开放

抽象(abstract)和接口(interface)是必不可少的,重写(override)可在原有功能的概念上更改不同的实现方式,接口不仅含有override的好处,而且对功能的划分更加友好,基于扩展函数的使用,可对不同功能进行相应的扩展。

扩展的核心是依赖数量和方向上的控制。

和依赖反转有什么区别

开闭原则的关注点是对功能变更的应对手段。依赖反转的关注点是对分层策略、模块解耦的控制。


更多文章详见主页:

转载地址:http://pajti.baihongyu.com/

你可能感兴趣的文章
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
刚刚写的一个Win32 SDK的工程扩展模板
查看>>
关于飞信的协议以及验证码
查看>>
E销助手软件(销售员的软件)
查看>>
Delphi类似QQ皮肤控件,欢迎试用!
查看>>
揭开半透明窗体的秘密(转)
查看>>
Delphi实现QQ2010的图片皮肤效果
查看>>
转载几篇别人写的皮肤类控件的技术文章
查看>>
Delphi XE的RTTI增强,动态Hook某些内部事件
查看>>
自制操作系统-kernel加载
查看>>
spring cloud config 报错,java.io.EOFException: Short read of block
查看>>
filebeat安装配置-简单版
查看>>
spring-cloud-config 突然报错 cannot open git-upload-pack
查看>>
oauth2.0 使用redis 缓存client token,导致redis内存爆了 -线上问题解决
查看>>
记录线上问题:服务器docker进程卡死了,打任何命令都无反应,最终是linux内核bug导致的
查看>>
vue devtools 安装使用(用源码构建)
查看>>
Oracle视图关联jpa失败,可以通过创建同义词解决
查看>>