开闭原则概述

开放封闭原则,简称开闭原则,是指一个软件实体应当对扩展开放,对修改关闭,即在设计一个模块时,应当使这个模块在不被修改的前提下进行扩展。

开闭原则实现书店打折销售

需求变更:
假设书店原有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代码实现相关推荐

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

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

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

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

  3. 设计原则 - 开闭原则

    目录 概念 实例 代码实例 需求变更 开闭原则的实现 源码 概念 开闭原则的定义:Open-Closed Principle,OCP,一个软件实体应当对扩展开放,对修改关闭. 开闭原则的中心思想:用抽 ...

  4. 软件设计原则——开闭原则

    开闭原则 对扩展开放,对修改关闭. 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简言之,是为了使程序的扩展性好,易于维护和升级. 想要达到这样的效果,我们需要使用接口和抽象类 ...

  5. 设计模式——开闭原则

    开闭原则:对扩展开放,对修改关闭. 具体实现:为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成.在很多面向对象编程语言中都提供了接口.抽象类等机制,可以通过它们定义系统的抽象层 ...

  6. 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

    前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle ). 开闭原则的描述是: Software ...

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

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

  8. 大话设计模式 第四章 开闭原则 优惠券

    定义 对扩展开放 对修改关闭 多态走起 里式替换约束 问题 每天早上小红去买早餐 早餐20元钱 老板每天给了它张优惠券 优惠券可以当天用 小红要付多少钱 上来就直接干 第一天 老板给了她张1元优惠券 ...

  9. java开闭原则代码实现_如何提高你的代码设计能力?

    前段时间零零碎碎把设计模式梳理了一遍,这个想法的初衷是基于JDK15的发布,阅读一些源码,一些设计很熟悉但是总是想不起是什么设计模式! 我们日常开发或者在做底层架构设计时,更应该留意和关注代码层面还有 ...

  10. java开闭原则实现代码_向对象的六大原则

    前言 我们都知道面向对象有六大原则,23种设计模式.它们可以指导我们如何写出更加优秀的代码.六大原则是基础,我们面向对象编程应该尽量遵从这六大原则,才能写出优秀的代码. 23种设计模式是前人为我们总结 ...

最新文章

  1. python中if错误-Python中常见的异常处理
  2. 解决AIX报错0506-342 无法挂载分区问题
  3. 全平台硬件解码渲染方法与优化实践
  4. SpringCloud创建Config Client配置读取
  5. 华为mstp多生成树配置_MSTP多区域生成树协议配置举例
  6. 语义分割之OCR的评判标准
  7. linux 引导原理 pdf,linux深度开发原理.pdf
  8. [推荐]网店代销的卖家,你的宝贝名称修改了吗?
  9. 网络计算机和弱电,弱电工程师和网络工程师的区别,你知道吗?
  10. 天线远场定义_天线近场与远场的划分(转)
  11. Windows 2000 检测系统安全进阶详解
  12. nginx 代理ip 和域名
  13. Qt使用QMediaplayer实现视频播放和简易音乐播放
  14. 【数据挖掘】2022数据挖掘之Matplotlib完整使用(折线图、散点图、柱状图、直方图、饼图)
  15. opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
  16. 2020-10-7 CCNA学习笔记
  17. php上传文件自动解压,PHP自动解压上传的rar文件
  18. 江湖问题研究-- intent传递有没有大小限制,是多少?
  19. matlab 把图像变成二维的,matlab图像怎么变成二维矩阵
  20. 索纳塔进入wince系统_索航导航一体机如何进wince系统?|KBS车友会

热门文章

  1. 使用PowerPoint
  2. 如何创建您自己的MP3铃声
  3. 最新PP点点通V2008简体中文版免费下载
  4. 《水经注地图发布服务中间件》for Linux 版发布
  5. FishC笔记—16 讲 序列,序列
  6. 水滴互助 :网络互助「创新者窘境」如何打破?
  7. iOS蓝牙开发(一)蓝牙相关基础知识
  8. 微信语音怎么转发给别人听_新版微信语音转发方法(微信语音怎么转发给别人听)...
  9. python-MongoDB可视化工具Robomongo 和 Mongochef
  10. 一级计算机office选择题题库及答案,计算机一级msoffice选择题题库40套含答案