面向对象六大原则——开闭原则

什么是开闭原则(Open Close Principle, OCP)

开闭原则是Java中最基础的设计原则,它指导我们如何建立一个稳定的,灵活的系统。

  • **定义:**一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。
  • 为什么使用开闭原则: 在程序的生命周期内,因为变化,升级和维护等原因需要对程序原有的代码进行修改时,可能会给代码引入错误,增加项目开发测试的复杂度,也可能会使我们不得不对整个功能进行重构,而且还要对原有的代码进行测试。

开闭原则——我是你们的爸爸

 开闭原则是一个非常基础的原则,其他的五个原则都是开闭原则的具体,也就是说其他的五个原则是指导设计的工具和方法,而开闭原则才是它们的精神领袖。从另一个角度说,开闭原则就是抽象类,其他五大原则是具体的实现类,开闭原则是一种纲领性的框架,五大原则在这个框架里添砖加瓦。所以这么说吧,只要我们遵守好其他的五大原则,那么我们设计的软件自然就遵守了开闭原则,现在我们再好好回顾一下其他五大原则:

  • 单一职责原则:应该有且仅有一个原因引起类的变更(一个接口或一个类只有一个原则,它就只负责一件事)
  • 里式替换原则:子类型必须能替换掉它们的基类型
  • 依赖倒置原则
    • 高层模块不应该依赖低层模块,两者都应该依赖其抽象
    • 抽象不应该依赖细节
    • 细节应该依赖抽象
  • 接口隔离原则
    • 客户端不应该依赖它不需要的接口
    • 类间的依赖关系应该建立在最小的接口上
  • 迪米特法则:只与直接朋友进行通信

 简单总结上面的五大原则就是:单一职责原则告诉我们实现类要职责单一;里式替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向抽象编程;接口隔离原则告诉我们设计接口要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则告诉我们:要对修改关闭,对扩展开放。其实只要我们想一想,前面的五大原则一直反复强调的,几乎每一个原则都在强调的宗旨是什么:解耦,单一,高内聚——这不就是开闭原则的精神纲领吗。

把开闭原则应用于实际项目中,我们需要注意至关重要的一点:抽象约束
 抽象是对一组事物的通用描述,没有具体的实现,也就表示它可以有非常多的可能性,可以跟随需求的变化而变化。因此,通过接口或抽象类可以约束一组可能变化的行为,并且能够实现对扩展开放,其包含三层含义:

  • 通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法
  • 参数类型、引用对象尽量使用接口或者抽象类,而不是实现类
  • 抽象层尽量保持稳定,一旦确定即不允许修改

参考书籍与链接

  • 《设计模式之禅》
  • https://blog.csdn.net/zhengzhb/article/details/7296944

你可能感兴趣的:(---------【设计模式】,◆【架构的艺术】)