开闭原则

讲解地址:https://www.bilibili.com/video/BV1AA411h75F/

1. 开闭原则的定义

开闭原则是一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。

 

 

 

软件实体包括以下部分:项目或软件产品中按照一定的逻辑规则划分的模块:抽象和类:方法

举例:比如在一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将客户端和服务端分开。公共部分抽象出来。

注意:开闭原则对扩展开放对修改关闭并不意味着不做任何修改,底层模块的变更更必然要有高层模块的耦合,否则就是一个孤立无意义的代码片段。

2.开闭原则的使用

在遇到这样一个问题时:

在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。

解决办法:

当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。而不是通过修改已有的代码来实现变化。开闭原则是面向对象设计中最基础的设计原则,它可以指导我们建立稳定灵活的系统。

1.抽象约束

(1)通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法

(2)参数类型、引用对象尽量使用接口或抽象类,而不是实现类

(3)抽象层尽量保持稳定,一旦确定不允许修改接口或抽象类一旦定义,应立即执行,不能有修改接口的想法,除非是彻底的大返工

2.元数据控制模块行为

元数据: 用来描述环境和数据的数据,通俗的说就是配置参数.

通过扩展一个子类,修改配置文件,完成了业务的变化,也是框架的好处

3.制定项目章程

4.封装变化

对变化的封装包含两层含义:

(1)将相同的变化封装到一个接口或抽象类中

(2)将不同的变化封装到不同的接口或抽象类中

注意:不能有两个不同的变化出现在同一个接口或抽象类中.封装变化,找出预计的变化或不稳定的点,为这些变化点创建稳定的接口,准确的讲是封装可能发生的变化。

3.开闭原则的优点

第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则

第二:开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,

第三:开闭原则可以提高复用性
在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来,不是在一个类中独立实现一个业务逻辑。那为什么要复用呢?减少代码的重复,避免相同的逻辑分散在多个角落,减少维护人员的工作量。那怎么才能提高复用率呢?缩小逻辑粒度,直到一个逻辑不可以分为止。

第四:开闭原则可以提高维护性
一款软件量产后,维护人员的工作不仅仅对数据进行维护,还可能要对程序进行扩展,维护人员最愿意做的事是扩展一个类,而不是修改一个类。让维护人员读懂原有代码,再进行修改,是一件非常漫长而苦恼的事情。




posted @ 2020-03-26 20:12  jyqdaisy  阅读(284)  评论(0编辑  收藏  举报