Vary's Blog

开闭原则

面向扩展开放,面向修改关闭。简单的说就是,别人可以基于你的代码进行拓展编写,但却不能修改你的代码

开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计七大原则之一,也是面向对象设计中最重要的原则之一,实际上里氏替换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)以及抽象类(Abstract Class)、接口(Interface)等等,都可以看作是开闭原则的实现方法。

面向扩展开放,面向修改关闭

  1. 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。

  2. 对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码。相对的在设计时就应考虑到,不需要改动模块的源代码,就可以对模块进行扩展。

开闭原则的相对性

软件系统的构建是一个需要不断重构的过程,在这个过程中,模块的功能抽象,模块与模块间的关系,都不会从一开始就非常清晰明了,所以构建100%满足开闭原则的软件系统是相当困难的,这就是开闭原则的相对性。但在设计过程中,通过对模块功能的抽象(接口定义),模块之间的关系的抽象(通过接口调用),抽象与实现的分离(面向接口的程序设计)等,可以尽量接近满足开闭原则。

Vary Zhao wechat
欢迎你扫描上面的二维码,加我微信