title: 开闭原则
date: 2018-12-04 16:29:51
tags: 设计模式
开闭原则
开闭原则(OCP),java世界里最基础的设计原则。
定义
软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭的。
遵循开闭原则设计出的模块具有两个主要特征
(1)对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。
(2)对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。
实现
可以通过继承、接口的方式扩展功能,通过抽象
优点
可复用性好。
我们可以在软件完成以后,仍然可以对软件进行扩展,加入新的功能,非常灵活。因此,这个软件系统就可以通过不断地增加新的组件,来满足不断变化的需求。
可维护性好。
由于对于已有的软件系统的组件,特别是它的抽象底层不去修改,因此,我们不用担心软件系统中原有组件的稳定性,这就使变化中的软件系统有一定的稳定性和延续性。