开闭原则(设计模式6)

简介: 遵循开闭原则设计出的模块具有两个主要特征: 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。

遵循开闭原则设计出的模块具有两个主要特征:

  • 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。
  • 对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

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

解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

         开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉我们对扩 展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。以前,如果有人告诉我“你进行设计的时候一定要遵守开闭原 则”,我会觉的他什么都没说,但貌似又什么都说了。因为开闭原则真的太虚了。

         在仔细思考以及仔细阅读很多设计模式的文章后,终于对开闭原则有了一点认识。其实,我们遵循设计模式前面5大原则,以及使用23种设计模式的目的就是遵循 开闭原则。也就是说,只要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的,这个开闭原则更像是前面五项原则遵守程度的“平均得分”,前 面5项原则遵守的好,平均分自然就高,说明软件设计开闭原则遵守的好;如果前面5项原则遵守的不好,则说明开闭原则遵守的不好。

目录
相关文章
|
设计模式 关系型数据库
【设计模式】软件设置原则-开闭原则
【1月更文挑战第12天】【设计模式】软件设置原则-开闭原则
|
设计模式 安全 Java
Java设计模式七大原则之开闭原则
Java设计模式七大原则之开闭原则
268 0
|
设计模式 关系型数据库
设计模式 - 六大设计原则之OCP(开闭原则)
在面向对象编程领域中,开闭原则规定软件中的类、对象、模块和函数对扩展应该是开放的,但对修改是封闭的。这意味着 应该用抽象定义结构,用具体实现扩展细节,以此确保软件系统开发和维护过程的可靠性。
472 0
设计模式 - 六大设计原则之OCP(开闭原则)
|
设计模式
设计模式(5) -- 开闭原则
设计模式(5) -- 开闭原则
277 0
设计模式(5) -- 开闭原则
|
消息中间件 设计模式 存储
【Java设计模式 经典设计原则】二 SOLID-OCP开闭原则
【Java设计模式 经典设计原则】二 SOLID-OCP开闭原则
422 0
|
设计模式 关系型数据库
设计模式七大原则——开闭原则
设计模式七大原则——开闭原则
设计模式七大原则——开闭原则
|
设计模式 关系型数据库 Java
【不就是Java设计模式吗】代码详解编程中最基础、最重要的设计原则——开闭原则(OCP)
【不就是Java设计模式吗】代码详解编程中最基础、最重要的设计原则——开闭原则(OCP)
【不就是Java设计模式吗】代码详解编程中最基础、最重要的设计原则——开闭原则(OCP)
|
设计模式
【设计模式】软件设计七大原则 ( 开闭原则 )
【设计模式】软件设计七大原则 ( 开闭原则 )
338 0
【设计模式】软件设计七大原则 ( 开闭原则 )
|
设计模式 Java 测试技术
设计模式—— 六:开闭原则
设计模式—— 六:开闭原则
494 0
设计模式—— 六:开闭原则
|
设计模式 关系型数据库
设计模式六大原则(六)----开闭原则
设计模式六大原则(六)----开闭原则
649 0