4.1 什么是开闭原则"开-闭"原则
“开-闭”原则讲的是:一个软件系统应该对开展时开放的,对修改时关闭的。英文原话:
(Software entity should be open for extension, but closed for modification)
这个原则说的是,在设计一个模块的时候,应该可以使这个模块可以在不被修改的前提下被扩张。换言之,应该可以在不必修改源代码的情况下改变这个模块的行为。
听上去很矛盾,但是通过一些使用一些设计模式就可以轻松的做到,如 适配器模式(adapter)等等。
满足了OCP(Open-Closed Principle)原则可以给软件系统带来两个无法比拟的设计目标:
1.扩展性。通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求。
2.稳定性。已有的软件模块,特别是最重要的抽象层模块不能被修改,这就是变化中的软件系统有一定的稳定性和可延续性。
同时,又可以使系统的可维护性大大提高。
4.2怎么做到“开-闭”原则
举个例子:
中国有很多个省,在这里排除直辖市,每个省有管理很多城市。大概是这样的情况,中国管省,省管市。但是随着经济的发展,很多县城的经济发展很快,如苏州的的昆山,经济发展已经超越了很多城市,但是昆山市个县,昆山政府申请变为城市,但是国家又不想改变现有的城市编制和管理,于是县级市诞生了,昆山以县级市的身份展现在了全国人民心中。
怎么才能实现“开-闭”原则
抽象化是关键
解决问题的关键在于抽象化。在像java这样的面向对象的语言中,可以给系统定义出一个一劳永逸,
不再更改的抽象设计,此设计允许有无穷无尽的实现,并且互不影响。在java语言中,给出一个抽象的类或者
接口,规定出具体方法必须提供的方法特征作为系统设计的抽象层。这个抽象层预见了所有的可能扩展,
因此,在任何扩展情况下都不会改变。这就使得系统的抽象层不需要修改,从而满足了“开-闭”原则的第二条
:对修改是关闭的。
同时,由于从抽象层导出一个或多个新的具体类来实现抽象类或者接口就可以改变系统的行为,因此系统的设计对扩展时开放的,
这就满足了“开-闭”原则的第一条。
对可变性的封装原则
如何设计好抽象层的类或者接口,我们必须对系统的可变性进行封装。这就是所谓的”对可变性的封装原则
"(Principle of Encapsulation of Variation short for EVP)对可变性的封装原则 讲的是找到一个系统的可变因素,将其封装起来。
“对可变性的封装原则”意味着两点:
1.一种可变性不应散落在很多角落,而应当被封装到一个对象里面。
2.一种可变性不应当与另一种可变性混合在一起。
分享到:
相关推荐
程序员考试刷题java8-ocp-study-notes 跟踪 OCP Java 8 书籍学习指南的存储库 我将在这里介绍的这本书是 Java 8 认证指南的第二部分。 第一个指南涵盖 OCA 考试(我已经通过了),本指南涵盖了 OCP 考试(1Z0-809 ...
第一部分 敏捷开发 第1章 敏捷实践 第2章 极限编程概述 第3章 计划 第4章 测试 第5章 重构 第6章 一次编程实践 第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 SRP:单一职责原则 第9章 OCP:开放-封闭原则 第10章 ...
第4章 测试 第5章 重构 第6章 一次编程实践 第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 单一职责原则(SRP) 第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离...
第四章 测试 4.1 测试驱动的开发方法 4.2 验收测试 4.3 结论 参考文献 第五章 重构 5.1 素数产生程序一个简单的重构示例 5.2 结论 参考文献 第六章 一次编程实践 6.1 保龄球比赛 6.2 结论 第Ⅱ部分 敏捷设计 第七章 ...
中文名: 敏捷软件开发:原则、模式与实践 原名: Agile Software Development:Principles,Patterns and Practices 别名: 软件工程实践丛书 作者: (美)Robert C.Martin译者: 邓辉 孟岩图书分类: 软件 资源格式: PDF ...
第4 章 “开-闭”原则(OCP).........45 4.1 什么是“开-闭”原则.................45 4.2 怎样做到“开-闭”原则.............45 4.3 与其他设计原则的关系...............47 4.4 策略模式对“开–闭”原则的支持 ...
第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116...
第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116...