开闭原则应用-书店打折Java代码实现
开闭原则概述
开放封闭原则,简称开闭原则,是指一个软件实体应当对扩展开放,对修改关闭,即在设计一个模块时,应当使这个模块在不被修改的前提下进行扩展。
开闭原则实现书店打折销售
需求变更:
假设书店原有4本书,现在按照9折出售图书,
打印输出打折前后的图书信息。
对修改关闭的原则,不能直接修改IBook接口和Novel类,
而是通过增加一个子类OffNovelBook来完成。
代码实现
(1)IBook接口
package bookStoreDemo;public interface IBook {//接口中一般写抽象方法public String getName();public double getPrice();public String getAuthor();}
(2)NovelBook接口实现类
package bookStoreDemo;public class NovelBook implements IBook{//接口的实现类private String name;private double price;private String author;public NovelBook() {//默认的构造方法}public NovelBook(String name, double price, String author) {this.name = name;this.price = price;this.author = author;}//自动生成get和set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}
}
(3)OffNovelBook类
package bookStoreDemo;public class OffNovelBook extends NovelBook{public OffNovelBook(String name, double price, String author) {super(name, price, author); }public double getPrice(){double beforePrice = super.getPrice();double currentPrice=0;currentPrice=beforePrice*90/100;return currentPrice;}
}
(4)BookStore类
package bookStoreDemo;
/*开闭原则实现书店打折销售
需求变更:
假设书店原有4大名著,现在按照9折出售图书,
打印输出打折前后的图书信息。
对修改关闭的原则,不能直接修改IBook接口和Novel类,
而是通过增加一个子类OffNovelBook来完成。*/import java.util.ArrayList;public class BookStore {//静态代码块只执行一次,可以视为常量private static final ArrayList<IBook> bookList=new ArrayList<IBook>();static{bookList.add(new OffNovelBook("设计模式",40,"张凯")); bookList.add(new OffNovelBook("机器学习",50,"王磊")); bookList.add(new OffNovelBook("Vue实战",40,"尤里溪")); bookList.add(new OffNovelBook("人工智能",40,"王万良")); } public static void main(String[] args) {System.out.println("---------------书籍打9折后的价格明细-----------------");for(IBook book:bookList){ System.out.println("书籍名称:" + book.getName()+"\t书籍作者:" + book.getAuthor()+ "\t书籍价格:" + book.getPrice()+"元"); } }
}
运行结果
开闭原则应用-书店打折Java代码实现相关推荐
- java开闭原则 例子_解析Java编程中设计模式的开闭原则的运用
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...
- Java设计原则之单一职责原则、开闭原则、里氏代换原则
文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量 ...
- 设计原则 - 开闭原则
目录 概念 实例 代码实例 需求变更 开闭原则的实现 源码 概念 开闭原则的定义:Open-Closed Principle,OCP,一个软件实体应当对扩展开放,对修改关闭. 开闭原则的中心思想:用抽 ...
- 软件设计原则——开闭原则
开闭原则 对扩展开放,对修改关闭. 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简言之,是为了使程序的扩展性好,易于维护和升级. 想要达到这样的效果,我们需要使用接口和抽象类 ...
- 设计模式——开闭原则
开闭原则:对扩展开放,对修改关闭. 具体实现:为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成.在很多面向对象编程语言中都提供了接口.抽象类等机制,可以通过它们定义系统的抽象层 ...
- 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle ). 开闭原则的描述是: Software ...
- 设计模式七大原则——开闭原则
1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...
- 大话设计模式 第四章 开闭原则 优惠券
定义 对扩展开放 对修改关闭 多态走起 里式替换约束 问题 每天早上小红去买早餐 早餐20元钱 老板每天给了它张优惠券 优惠券可以当天用 小红要付多少钱 上来就直接干 第一天 老板给了她张1元优惠券 ...
- java开闭原则代码实现_如何提高你的代码设计能力?
前段时间零零碎碎把设计模式梳理了一遍,这个想法的初衷是基于JDK15的发布,阅读一些源码,一些设计很熟悉但是总是想不起是什么设计模式! 我们日常开发或者在做底层架构设计时,更应该留意和关注代码层面还有 ...
- java开闭原则实现代码_向对象的六大原则
前言 我们都知道面向对象有六大原则,23种设计模式.它们可以指导我们如何写出更加优秀的代码.六大原则是基础,我们面向对象编程应该尽量遵从这六大原则,才能写出优秀的代码. 23种设计模式是前人为我们总结 ...
最新文章
- python中if错误-Python中常见的异常处理
- 解决AIX报错0506-342 无法挂载分区问题
- 全平台硬件解码渲染方法与优化实践
- SpringCloud创建Config Client配置读取
- 华为mstp多生成树配置_MSTP多区域生成树协议配置举例
- 语义分割之OCR的评判标准
- linux 引导原理 pdf,linux深度开发原理.pdf
- [推荐]网店代销的卖家,你的宝贝名称修改了吗?
- 网络计算机和弱电,弱电工程师和网络工程师的区别,你知道吗?
- 天线远场定义_天线近场与远场的划分(转)
- Windows 2000 检测系统安全进阶详解
- nginx 代理ip 和域名
- Qt使用QMediaplayer实现视频播放和简易音乐播放
- 【数据挖掘】2022数据挖掘之Matplotlib完整使用(折线图、散点图、柱状图、直方图、饼图)
- opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
- 2020-10-7 CCNA学习笔记
- php上传文件自动解压,PHP自动解压上传的rar文件
- 江湖问题研究-- intent传递有没有大小限制,是多少?
- matlab 把图像变成二维的,matlab图像怎么变成二维矩阵
- 索纳塔进入wince系统_索航导航一体机如何进wince系统?|KBS车友会