开闭原则(Open-Closed Principle,OCP)
1、“开-闭”原则的定义及优点
1)定义:一个软件实体应当对扩展开放,对修改关闭( Software entities should be open for extension,but closed for modification.)。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
2)满足“开-闭”原则的系统的优点
a)通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性。
b)已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性。
c)这样的系统同时满足了可复用性与可维护性。
2、如何实现“开-闭”原则
在面向对象设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。换言之,定义一个一劳永逸的抽象设计层,允许尽可能多的行为在实现层被实现。
解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。
对一个事物抽象化,实质上是在概括归纳总结它的本质。抽象让我们抓住最最重要的东西,从更高一层去思考。这降低了思考的复杂度,我们不用同时考虑那么多的东西。换言之,我们封装了事物的本质,看不到任何细节。
在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。
对实体进行扩展时,不必改动软件的源代码或者二进制代码。关键在于抽象。
3、对可变性的封装原则
“开-闭”原则也就是“对可变性的封装原则”(Principle of Encapsulation of Variation ,EVP)。即找到一个系统的可变因素,将之封装起来。换言之,在你的设计中什么可能会发生变化,应使之成为抽象层而封装,而不是什么会导致设计改变才封装。
“对可变性的封装原则”意味着:
a)一种可变性不应当散落在代码的许多角落,而应当被封装到一个对象里面。同一可变性的不同表象意味着同一个继承等级结构中的具体子类。因此,此处可以期待继承关系的出现。继承是封装变化的方法,而不仅仅是从一般的对象生成特殊的对象。
b)一种可变性不应当与另一种可变性混合在一起。作者认为类图的继承结构如果超过两层,很可能意味着两种不同的可变性混合在了一起。
使用“可变性封装原则”来进行设计可以使系统遵守“开-闭”原则。即使无法百分之百的做到“开-闭”原则,但朝这个方向努力,可以显著改善一个系统的结构。
分享到:
相关推荐
开闭原则是面向对象设计中的一个核心原则,它在JAVA设计模式中占据着重要的地位。这一原则由格里·贝斯提出,旨在指导开发者如何设计可维护和可扩展的软件系统。开闭原则(Open-Closed Principle,OCP)的核心思想是...
### 面向对象设计原则详解 面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它强调将复杂系统分解为简单的、相互协作的对象。在面向对象编程中,遵循一定的设计原则是非常重要的,这些原则有...
对面向对象设计原则的总结,设计模式:“开-闭”原则,里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则
面向对象设计原则概述 单一职责 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则
Java_面向对象设计原则总结 一 类的设计原则 1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle...
面向对象设计原则总结 面向对象设计原则是软件设计中最重要的原则之一,它们是软件设计的基础和核心。面向对象设计原则的应用可以提高软件的开发效率、质量和可维护性。下面是七大面向对象设计原则的总结: 一、开...
面向对象设计模式是软件工程领域一个非常重要的主题,它不仅涉及如何组织代码、构建系统,还关乎如何确保软件系统的灵活性、可扩展性和可维护性。本文将深入探讨面向对象设计中的核心原则,并通过具体示例来阐述这些...
面向对象设计原则与设计模式是软件工程领域的重要组成部分,它们为构建高质量、可维护和可扩展的软件系统提供了指导方针。下面将详细阐述面向对象设计原则及其如何促进软件的复用,以及设计模式的概念。 ### 面向...
面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心。在设计面向对象的程序的时,模式不是一定要套的,但是有一些原则最好是遵守。这些原则已知的有七个,包括:单一...
面向对象编程的七大原则是指在面向对象设计中所遵循的七个基本原则,它们是:开闭原则、依赖倒转原则、单一职责原则、接口隔离原则、迪米特法则、里氏替换原则和组合优于继承原则。 1. 开闭原则(Open-Closed ...
开闭原则(Open-Closed Principle,简称OCP)是面向对象设计中的一个核心原则,它在软件工程领域具有举足轻重的地位。该原则由 Bertrand Meyer 在其著作《Object-Oriented Software Construction》中提出,旨在提高...
面向对象设计原则,开闭原则,迪米特法则,里氏代换,接口隔离
面向对象设计原则是软件开发中的核心指导思想,它们旨在提高代码的可维护性、可扩展性和可重用性。在面向对象设计(OOD)中,遵循这些原则可以帮助我们构建更加稳定、灵活的系统。以下是对这些原则的详细解释: 1. ...
开闭原则是面向对象设计中的一个基本原则,它由软件工程专家 Bertrand Meyer 在其著作《Object-Oriented Software Construction》中提出。这个原则的核心思想是“对扩展开放,对修改关闭”。简单来说,就是模块应该...
面向对象设计原则与设计模式是软件工程中至关重要的概念,它们是构建可维护、可扩展、高复用性代码的基础。下面将详细阐述这些原则和模式,并结合PPT文件名称"设计原则.ppt"来推测可能包含的内容。 一、面向对象...
除了上述五个主要原则,还有其他一些面向对象设计的实践经验: - **类结构层次**:通常推荐类结构层次保持在三到四层,以保持设计的清晰度和可读性。 - **职责明确**:每个类应有明确的职责,避免一个类承担过多的...