开闭原则
1.起源.
1988 年,Bertrand Meyer在他的著作《Object Oriented Software Construction》中提出了开闭原则(OCP, Open-Closed Prineiple) ,开闭原则的描述比较简单,具体如下:Software entities (elasses, mod-ules, functions, etc.) should be open for extension but closed for modification.软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭。其中open for extension(对扩展开放)指的是当出现新需求的时候,可以通过扩展现有软件实体达到目的。开闭原则中“open”,是指软件组件功能的扩展是开放的,允许对其进行功能扩展."Close for modifcation" (对修改关闭)指的是不允许对该实体做任何修改,“close"是指对于原有代码的修改是封闭的。即不应该修改原有的代码。
实现开闭原则的关键就在于“抽象”,而不是基于“实现"来 编程。 下面我们来看看一一个基于“实现"编程的例子。 假如我们要实现这样-一个需求:爸爸喝绿茶。通过这个需求,我们分析其中包含两个类:爸爸类和绿茶类。两个类之间的关系如下:


上述代码显然不符合开闭原则,因为进行业务逻辑处理的Daddy类和Green'Tea类的耦合度太高,需要降低它们之间的耦合度!
在这里我们设计了一个三层的结构,通过引人接口和抽象 类来实现开闭原则。第-一层是接口ITea,定义了一-个use(方法; 第二层是抽象类Tea,实现了ITea接口;第三层是具体的实现 类,可以扩展很多个。


小结:实际的软件开发中,需要通过扩展来实现业务逻辑的变化,而不是修改。如果-一个软件系统符合开闭原则的,那么从软件工程的角度来看,它至少具有这样的好处:可扩展性好、可维护性好。
视频链接:https://www.bilibili.com/video/BV1q7411C7WV?pop_share=1
浙公网安备 33010602011771号