整理日期:2022-05-27

目录

一.开闭原则

二.为什么使用开闭原则

三.如何在程序设计中体现开闭原则


一.开闭原则

开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原 则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增 加新功能。

二.为什么使用开闭原则

1.开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则

2.开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,也就是说其它的五个设计原则是指导设计的工具和方法,而开闭原则才是其精神领袖。

3.开闭原则可以提高复用性

在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来,不是在一个类中独立实现一个业务逻辑。只有这样的代码才可以复用,粒度越小,被复用的可能性越大。那为什么要复用呢?减少代码的重复,避免相同的逻辑分散在多个角落,减少维护人员的工作量。那怎么才能提高复用率呢?缩小逻辑粒度,直到一个逻辑不可以分为止。

4.开闭原则可以提高维护性、扩展性

一个程序、一款软件量产后,维护人员的工作不仅仅对数据进行维护,还可能要对程序进行扩展,维护人员最乐意的事是扩展一个类,而不是修改一个类。让维护人员读懂原有代码,再进行修改,是一件非常痛苦的事情,不要让他在原有的代码海洋中游荡后再修改,那是对维护人员的折磨和摧残。

5.面向对象开发的要求

万物皆对象,我们要把所有的事物抽象成对象,然后针对对象进行操作,但是万物皆发展变化,有变化就要有策略去应对,怎么快速应对呢?这就需要在设计之初考虑到所有可能变化的因素,然后留下接口,等待“可能”转变为“现实”。

三.如何在程序设计中体现开闭原则

以学生信息管理系统为例。在运用多态改进代码时,此时的对扩展开放:如增加一个新的学生类型,比如小学生、中学生。我们只需要另外设计出小学生类、中学生类,使这两个类继承学生类,并重写学生类中的抽象方法;对修改关闭:关闭的是对抽象的学生类的改变,当然如果另外设计了某些功能接口的话,对接口的修改也是关闭的。从整体上看,增加或修改的模块对其他部分代码并没有很大的影响,即其他部分代码不需要做出较多的改动。这也是代码易扩展、易维护的重要体现。

当未使用多态时,地址类的设计同样可以体现开闭原则,因为地址类作为一个相对独立的类,还可以复用在其他地方得到扩展,此时对地址类的具体细节的修改是关闭的。

其实这样的编程思想可以很好的运用在面向对象程序设计的完成上(个人理解),如可以设计一个问卷调查、测评系统,又或是一个常规的管理系统。对扩展开放(可扩展部分):可以增加问卷调查的类型、问卷调查的对象或管理系统的操作对象。对修改关闭(核心部分):关闭对抽象类的修改、对功能接口的修改等。这样也能很好的提高代码的可扩展性及可维护性。

分享结束,感谢阅读!

水平有限,恳请指教~

关于Java面向对象程序设计原则之一——开闭原则的思考与分享相关推荐

  1. Java面向对象设计原则1——开闭原则

    在我们学习面向对象编程的时候,总会出现一些问题,好比以前刚刚写好的代码,上线测试可以.正常运行,突然有一天说要加一个功能,改完之后,发现以前正常运行的功能不能用了,类似这样的问题有好多好多,为了避免类 ...

  2. Java设计原则之单一职责原则、开闭原则、里氏代换原则

    文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量 ...

  3. 设计模式六大原则之--开闭原则(OCP)

    设计模式六大原则之--开闭原则(OCP) 前言 1 描述 2 理解: 3 问题由来: 4 使用LoD的好处: 5 难点: 6 最佳实践: 7 范例: 前言 The Open - Closed Prin ...

  4. 六大设计原则之开闭原则

    开闭原则的定义 开闭原则是java世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活的系统.开闭原则定义如下: Software entities like classes,modules an ...

  5. 设计原则:开闭原则(OCP)

    1.什么是开闭原则 开闭原则的英文是Open Closed Principle,缩写就是OCP.其定义如下: 软件实体(模块.类.方法等)应该"对扩展开放.对修改关闭". 从定义上 ...

  6. 设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离【万字长文系列】

    文章目录 设计模式经典设计原则-第一节 单一职责原则(SRP) 如何理解单一职责原则? 如何判断类的职责是否足够单一? 类的职责是否设计得越单一越好? 开闭原则(OCP) 如何理解"对扩展开 ...

  7. [设计原则] 六大设计原则之“开闭原则”

    [设计原则] 六大设计原则之"开闭原则" 目录 [设计原则] 六大设计原则之"开闭原则" 什么是开闭原则 为什么使用开闭原则 如何使用开闭原则 注意事项 总结 ...

  8. 设计模式-软件架构设计七大原则及开闭原则详解

    前言 在日常工作中,我们使用Java语言进行业务开发的时候,或多或少的都会涉及到设计模式,而运用好设计模式对于我而言,又是一个比较大的难题.为了解决.克服这个难题,Remi酱特别开了这个博客来记录自己 ...

  9. 6大设计原则之开闭原则

    开闭原则的定义 开闭原则的定义: 一个软件实体,如类.模块和函数应该对扩展开放,对修改关闭.即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化. 软件实体包括一下部分 项目或软件 ...

最新文章

  1. 算法基础知识科普:8大搜索算法之AVL树(中)
  2. 业界资讯: Air 2.0 beta 版本 发布
  3. 【斐波那契数列】算法优化笔记
  4. FreeSql (十五)查询数据
  5. centos-7部署docker
  6. 聚溶众星CEO朱纯仪:MCN一年营收2.5亿,带货才是直播的未来
  7. 计算机组成原理 王道考研2021 第一章:计算机组成原理概述 -- 计算机硬件的基本组成、认识各个硬件部分
  8. 深度强化学习(深度Q学习
  9. 仿uc设置默认浏览器
  10. 虚拟机ip、主机ip、代理ip
  11. html隐藏图片白色部分,css去掉gif透明图片的白边
  12. VBA遍历文件夹下的文件并且合并工作簿到一个工作簿中
  13. 计算机键盘突然失灵,笔记本键盘突然用不了怎么办_笔记本键盘突然失灵怎么回事-win7之家...
  14. Cesium中获取坐标点地形高程的方法
  15. 软硬件学习记录5—— Verilog语言中的数据类型
  16. 今日头条有麻烦了!App 被下架
  17. 复数乘法(JAVA)
  18. 环境变量的变量名可以随便写么
  19. 关于刘慈欣的若干个标题
  20. win10解除usb禁用_win10 禁用了usb设备功能怎么处理

热门文章

  1. 初级php工程师考试,Autodesk AutoCAD Civil 3D初级工程师
  2. 三分钟教你怎么绘制流程图
  3. 城市安全风险管理项目Postmortem结果
  4. 卸载oracle9i精简版,Oracle精简版客户端
  5. 高贵抑或低俗——《诸子时代的秩序追寻》读后感范文4300字
  6. 天行数据TianAPI数据类免费接口
  7. 把一个数分解其个位,十位,百位,千位,万位 (C语言)
  8. 原生JS 实现日期倒计时效果
  9. go开发linux下桌面程序,使用FMXlinux 开发linux 桌面应用-Go语言中文社区
  10. 怎么用python画sin函数图像_如何使用python的matplotlib模块画正弦函数图像