01.开闭原则 Open-Closed Principle
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相关推荐
- 开闭原则(Open-Closed Principle,OCP)
2 开闭原则(Open-Closed Principle,OCP) 2.1 什么是开闭原则 开闭原则是面向对象设计中"可复用设计"的基石,是面向对象设计中最重要的原则之一, ...
- “开-闭”原则(Open-Closed Principle)
1.1 "开-闭"原则(Open-Closed Principle) 1.1.1 作用 它指导我们如何提高代码的可扩展性! 1.1.2 定义 (1)Open(Open for ...
- Java设计模式之开闭原则(Open-Closed Principle)
Software entities like classes, modules and functions should be open for extension but closed for mo ...
- java开闭原则 例子_解析Java编程中设计模式的开闭原则的运用
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- 设计模式之禅之开闭原则
声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 开闭原则(Open Closed Principle):对扩展开放,对修改关闭 1.定义: 软件实 ...
- 设计模式七大原则——开闭原则
1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...
- java开闭原则 例子_Java设计原则—开闭原则(转)
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- 学习设计模式 - 六大基本原则之开闭原则
设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...
- 设计原则(一)开-闭原则(OCP)
经典力学的基石是牛顿三大定律.而面向对象的可复用设计的第一块基石,便是所谓的"开-闭"原则(Open-Closed Principle,常缩写为OCP). 一.什么是开闭原则 &q ...
最新文章
- Keepalived+lvs+httpd之负载均衡
- 皮一皮:女友在意的点....是包子!
- 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)
- 在小公司、中等规模公司和大公司工作有什么不同
- 018_html文件路径
- 编程语言“铁三角”,JavaScript 力压 Java和Python
- Linux 使用 jstat 命令查看 jvm 的 GC 情况
- Java反射机制获取系统@Hide属性
- How to make .dmg install for Mac
- vue 监听div滚动事件
- 苹果手机速度慢_安卓手机用户也想体验一下MagSafe充电器?还是算了吧!
- MAC读写NTFS移动硬盘的解决办法
- 三维重建-摄像机模型+摄像机标定(上)
- 不改变图片尺寸,将图片内存调大
- java-IO流基础知识
- ERP系统-库存子系统-领料单
- 倪海厦《天纪》「自参」
- 还不知道什么是内网穿透吗,今天我带你深刻了解
- 电商宝打单发货-菜鸟面单回收
- Java实现扑克牌程序(数据结构)
热门文章
- vue制作导航栏html,Vue如何实现导航栏菜单的方法
- mysql工具及驱动下载地址
- <Essential C++学习>入门
- 交大翟广涛教授:眼见不实,怎样评价媒体体验质量
- 学习php入门,php学习入门方法
- python安装fitz时出问题,解决方案
- NodeJS - 使用 nodemon
- Java在线教育项目 第九天黑马头条爬虫
- 如何在Ubuntu QML应用中使用Push Notification
- linux双系统uefi引导修复,桌面应用|Windows和Ubuntu双系统,修复UEFI引导的两种办法...