`

设计模式学习- 开闭原则

 
阅读更多

开闭原则定义:

一个软件实体如类、 模块和函数应该对扩展开放, 对修改关闭。通俗一点讲,就是一个软件实体应该通过扩展来实现变化,而不是通过修改原有的代码来实现变化。
开闭原则的优点:

1.不修改原有代码,只通过继承或者实现一个接口来完成功能的变更,避免了修改代码带来的风险,大大提升了系统的可扩展性和稳定性。

2.原有代码一般不变,维护人员如果需要新增功能只需要添加新类和新的方法而不需要看懂原来的代码,提高系统的可维护性的同时也增强了系统应对变更的灵活性

3.减少了测试成本,一旦修改了原有方法的代码,那么所有引用该方法的地方都可能需要再重新测试一次,无形中增加了测试的成本。但是如果仅仅是新增了一个方法,那么只需要测试该方法通过即可。

如何使用开闭原则:

1. 抽象约束

第一, 通过接口或抽象类约束扩展, 对扩展进行边界限定, 不允许出现在接口或抽象类中不存在的public方法;
第二, 参数类型、 引用对象尽量使用接口或者抽象类, 而不是实现类;

第三, 抽象层尽量保持稳定, 一旦确定即不允许修改。

2. 元数据( metadata) 控制模块行为
3. 制定项目章程
4. 封装变化

 

 


 

 

 

 

分享到:
评论

相关推荐

    JAVA设计模式之设计原则 ---开闭原则源码

    开闭原则是面向对象设计中的一个核心原则,它在JAVA设计模式中占据着重要的地位。这一原则由格里·贝斯提出,旨在指导开发者如何设计可维护和可扩展的软件系统。开闭原则(Open-Closed Principle,OCP)的核心思想是...

    java设计模式---诙谐易懂版

    包括单一职责原则(Single Responsibility Principle)、里氏替换原则(Liskov Substitution Principle)、依赖倒置原则(Dependency ...、迪米特法则(Law of Demeter)以及开闭原则(Open/Closed Principle)...

    设计模式复习题.doc

    - 开闭原则:扩展开放,修改关闭 - 里式代换原则 - 合成聚合原则 - 依赖倒转原则 - 迪米特法原则 - 接口隔离原则 5. 设计模式的实现方式: - 使用继承来实现工厂模式 - 使用组合来实现抽象工厂模式 - 使用...

    Java设计模式学习.pdf

    文档中描述的是Java设计模式学习笔记,目前涉及了7种设计模式,但没有具体指明这7种模式是什么,计划后续增加更多的模式。虽然文件内容中存在OCR扫描的识别错误,但不影响我们从整体上把握设计模式的脉络和学习方法...

    JAVA设计模式--程序设计--反射--注解--泛型

    这些模式提供了良好的可复用性和可扩展性,帮助开发者遵循“开闭原则”,即对修改关闭,对扩展开放。 其次,程序设计不仅关注代码的实现,更强调代码的组织结构和逻辑。在Java中,良好的程序设计包括模块化、封装、...

    Java Web设计模式之OCP(开闭原则)

    开闭原则(Open-Closed Principle,OCP)是软件工程中的一个基本原则,由Bertrand Meyer在1988年提出,它是面向对象设计的核心之一。这个原则规定了软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。这...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    此外,书中可能还会涉及面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),这些都是设计模式背后的重要理论基础。 总的来说,《设计模式--基于C#...

    设计模式资料-自用学习的

    设计模式的产生背景可以追溯到1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作《面向对象软件构造》(Object Oriented Software Construction)中提出了开闭原则(Open Closed Principle,OCP),这是设计模式的...

    JAVA设计模式-原则和23种设计模式归纳总结

    本资源首先介绍了设计模式的六大原则,包括单一责任原则、开闭原则、里氏替换原则、接口隔离原则、合成复用原则和最少知道原则。然后,资源对23种设计模式进行了分类和总结,包括创建型模式、结构型模式和行为型模式...

    设计模式--java版.rar

    同时,设计模式也有助于提升系统的可扩展性和可维护性,因为它们遵循了良好的设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。 在Java开发中,熟练掌握和运用设计模式不仅可以提升...

    设计模式培训-strategy

    3. **开闭原则**:软件实体应该是可扩展的,但不应该被修改。 4. **里氏替换原则**:子类应该可以替换其父类,并且能够保持程序的正确性。 5. **依赖倒置原则**:高层模块不应该依赖于低层模块,而是应该依赖于抽象...

    24种设计模式介绍与6大设计原则-PDF版 查阅方便

    2. 开闭原则:对扩展开放,对修改关闭,意味着在不修改原有代码的基础上增加新功能。 3. 里氏替换原则:子类必须能够替换掉它们的基类,不影响程序的正确性。 4. 接口隔离原则:避免使用宽泛的接口,尽量细化接口,...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)(0520_).rar

    包括如何在C#项目中组织代码,遵循SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则),以及如何利用设计模式优化软件架构。 "扩展"部分可能涉及如何在现有设计模式的基础上进行创新...

    Java设计模式教程 - Java设计模式 - 工厂模式

    虽然简单,但它违反了“开闭原则”,即对扩展开放,对修改关闭,因为如果要添加新产品,就需要修改工厂类。 2. **工厂方法模式**: 工厂方法模式将对象的创建过程委托给子类,每个子类对应一个特定的产品类型。这...

    java之设计模式--各种设计模式解析

    这样,当需要添加新的导出格式时,只需添加新的工厂类,而不需要修改现有的代码,符合开闭原则。 接着,讨论单例模式。单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,单例模式常用于资源管理,如...

    Head First设计模式---中文版

    《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,尤其适合初学者。它以其独特的教学风格,通过丰富的图像和生活化的例子,使抽象的软件设计概念变得生动易懂。设计模式是软件开发中经过实践验证的...

    设计模式-王翔 全本

    除了介绍各个模式,王翔还会讨论设计原则,如单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)和依赖倒置原则(Dependency Inversion Principle, DIP)。这些原则是...

    02-软件设计原则 模式深度解析和案例分析

    ### 软件设计原则与模式深度解析及案例分析 #### 一、软件设计原则的...通过案例分析和实战演练,学员不仅可以学习到设计模式的具体应用方法,还可以深刻理解设计模式背后的原理及其在提高软件质量方面的重要作用。

Global site tag (gtag.js) - Google Analytics