1.定义

指一个软件实体如类、模块和函数应该 对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强 调的是用抽象构建框架,用实现扩展细节。

2.介绍

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

例如:我们版本更新,我们尽可能不修改源代码,但是可以增加新功能。 在现实生活中对于开闭原则也有体现。比如,很多互联网公司都实行弹性制作息时间, 规定每天工作 8 小时。意思就是说,对于每天工作 8 小时这个规定是关闭的,但是你什 么时候来,什么时候走是开放的。早来早走,晚来晚走。

3.优点

可以提高软件系统的可复用性及可维护性

4.案例

以课程来演示介绍

4.1 课程接口 ICourse

public interface ICourse {Integer getId();String getName();Double getPrice();
}

4.2 JavaCourse接口实现类

课程有 Java 架构、大数据、人工智能、前端、软件测试等,我们来创建一 个 Java 架构课程的类 JavaCourse

public class JavaCourse implements ICourse{private Integer id;private String name;private Double price;public JavaCourse(Integer id, String name, Double price) {this.id = id;this.name = name;this.price = price;}@Overridepublic Integer getId() {return id;}@Overridepublic String getName() {return name;}@Overridepublic Double getPrice() {return price;}@Overridepublic String toString() {return "JavaCourse{" +"id=" + id +", name='" + name + '\'' +", price=" + price +'}';}
}

4.3 开闭原则体现代码(JavaDiscountCourse类)

若我们要给 Java 课程做活动,价格会变优惠。如果修改 JavaCourse 中的 getPrice() 方法,则会存在一定的风险,可能影响其他地方的调用结果。我们如何在不修改原有代码前提前下,实现价格优惠这个功能呢?现在,我们再写一个处理优惠逻辑的类, JavaDiscountCourse 类

public class JavaDiscountCourse extends JavaCourse {public JavaDiscountCourse(Integer id, String name, Double price) {super(id, name, price);}// 为了不改变父类的售价,用不同的方法名表示public Double getDiscountPrice() {return super.getPrice() * 0.6;}
}

4.4 测试类

public class OpenCloseTest {public static void main(String[] args) {ICourse course = new JavaDiscountCourse(1,"Java架构",11800D);System.out.println("课程ID:"  + course.getId() +"\n课程名称:" + course.getName()  +"\n售价:" + ((JavaDiscountCourse)course).getDiscountPrice());}
}

5.结构

01.开闭原则 Open-Closed Principle相关推荐

  1. 开闭原则(Open-Closed Principle,OCP)

    2 开闭原则(Open-Closed Principle,OCP) 2.1 什么是开闭原则     开闭原则是面向对象设计中"可复用设计"的基石,是面向对象设计中最重要的原则之一, ...

  2. “开-闭”原则(Open-Closed Principle)

    1.1   "开-闭"原则(Open-Closed Principle) 1.1.1 作用 它指导我们如何提高代码的可扩展性! 1.1.2 定义 (1)Open(Open for ...

  3. Java设计模式之开闭原则(Open-Closed Principle)

    Software entities like classes, modules and functions should be open for extension but closed for mo ...

  4. java开闭原则 例子_解析Java编程中设计模式的开闭原则的运用

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...

  5. 设计模式之禅之开闭原则

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 开闭原则(Open Closed Principle):对扩展开放,对修改关闭 1.定义:    软件实 ...

  6. 设计模式七大原则——开闭原则

    1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...

  7. java开闭原则 例子_Java设计原则—开闭原则(转)

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...

  8. 学习设计模式 - 六大基本原则之开闭原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  9. 设计原则(一)开-闭原则(OCP)

    经典力学的基石是牛顿三大定律.而面向对象的可复用设计的第一块基石,便是所谓的"开-闭"原则(Open-Closed Principle,常缩写为OCP). 一.什么是开闭原则 &q ...

最新文章

  1. Keepalived+lvs+httpd之负载均衡
  2. 皮一皮:女友在意的点....是包子!
  3. 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)
  4. 在小公司、中等规模公司和大公司工作有什么不同
  5. 018_html文件路径
  6. 编程语言“铁三角”,JavaScript 力压 Java和Python
  7. Linux 使用 jstat 命令查看 jvm 的 GC 情况
  8. Java反射机制获取系统@Hide属性
  9. How to make .dmg install for Mac
  10. vue 监听div滚动事件
  11. 苹果手机速度慢_安卓手机用户也想体验一下MagSafe充电器?还是算了吧!
  12. MAC读写NTFS移动硬盘的解决办法
  13. 三维重建-摄像机模型+摄像机标定(上)
  14. 不改变图片尺寸,将图片内存调大
  15. java-IO流基础知识
  16. ERP系统-库存子系统-领料单
  17. 倪海厦《天纪》「自参」
  18. 还不知道什么是内网穿透吗,今天我带你深刻了解
  19. 电商宝打单发货-菜鸟面单回收
  20. Java实现扑克牌程序(数据结构)

热门文章

  1. vue制作导航栏html,Vue如何实现导航栏菜单的方法
  2. mysql工具及驱动下载地址
  3. <Essential C++学习>入门
  4. 交大翟广涛教授:眼见不实,怎样评价媒体体验质量
  5. 学习php入门,php学习入门方法
  6. python安装fitz时出问题,解决方案
  7. NodeJS - 使用 nodemon
  8. Java在线教育项目 第九天黑马头条爬虫
  9. 如何在Ubuntu QML应用中使用Push Notification
  10. linux双系统uefi引导修复,桌面应用|Windows和Ubuntu双系统,修复UEFI引导的两种办法...