开闭原则:   当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改

有的代码来实现变化。

开闭原则代码2:(遵循开闭原则,推荐使用)

/*** 用于绘图的类[使用方]*/
class GraphicEditor {// 接收 Shape 对象,然后根据 type, 来绘制不同的图形public void drawShape(Shape s) {s.draw();}
}/*** Shape类,基类*/
abstract class Shape {int m_typte;// 绘图的方法更改为抽象方法,子类取实现它public abstract void draw();
}/*** 矩形实体类*/
class Rectangle extends Shape {Rectangle() {super.m_typte = 1;}@Overridepublic void draw() {System.out.println(" 绘制矩形 ");}
}/*** 圆形实体类*/
class Circle extends Shape {Circle() {super.m_typte = 2;}@Overridepublic void draw() {System.out.println(" 绘制圆形 ");}
}/*** 三角形实体类*/
class Triangle extends Shape {Triangle() {super.m_typte = 3;}@Overridepublic void draw() {System.out.println(" 绘制三角形 ");}
}/*** 其他图形实体类*/
class Other extends Shape {Other() {super.m_typte = 4;}@Overridepublic void draw() {System.out.println(" 绘制其他图形 ");}
}public static void main(String[] args) {GraphicEditor graphicEditor = new GraphicEditor();// 输出:绘制矩形graphicEditor.drawShape(new Rectangle());// 输出:绘制圆形graphicEditor.drawShape(new Circle());// 输出:绘制三角形graphicEditor.drawShape(new Triangle());// 输出:绘制其他图形graphicEditor.drawShape(new Other());
}

解析:把创建Shape类做成抽象类,并提供一个抽象的draw方法,让子类去实现即可,这样我们有新的图形种类时,只需要让新的图形种类继承Shape,并实现draw方法即可,使用方的代码就不需要修改,满足了开闭原则;

设计模式的七大原则——开闭原则(下)相关推荐

  1. 设计模式6大原则-开闭原则

    设计模式6大原则-开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则理念就是当需求改变时,希望在不改变原有代码的前提下,通过扩展模块.函数来满足新需求. 开闭原则是其他 ...

  2. 设计模式之王者原则 开闭原则

    设计模式之王者原则  开闭原则 为什么说 它--开闭原则是王者原则呢? 因为所有原则都是围绕它来实现的,怎么说呢,为什么会有这么多原则呢,都是为了完成它,只要实现它你的代码就不会有什么大的问题 一.定 ...

  3. 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)

    前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...

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

    定义 software entities like classes, modules and functions should be open for extension but closed for ...

  5. Java设计模式七大原则-开闭原则

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

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

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

  7. 【设计模式】软件设计七大原则 ( 开闭原则 )

    文章目录 一.开闭原则简介 二.开闭原则代码示例 1.商品接口 2.普通商品类 3.折扣商品类 4.测试类 一.开闭原则简介 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 ...

  8. 软件设计的七大原则 --开闭原则 里氏替换原则 依赖倒置原则

    在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本. 这 7 种设计原则是软件设计 ...

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

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

最新文章

  1. @aspect注解类不生效_springboot:@Transactional注解 VS @Service注解
  2. React技术栈——webpack
  3. python列表可以加可以乘
  4. nhibernate mysql配置_NHibernate各种数据库连接参数文件配置方法说明
  5. python登录系统的实现方法_python实现简单登陆系统
  6. 计算机网络应用简介_计算机网络简介
  7. Java基础(四)——异常、断言、日志
  8. springmvc返回值、数据写到页面、表单提交、ajax、重定向
  9. 【AWVS12】安全漏洞扫描工具,使用详解
  10. ToStringBuilder.reflectionToString用法
  11. 【华为HCIE安全考什么科目?华为HCIE安全考什么知识点?】
  12. 微信公众号自动回复如何添加超链接
  13. Stata绘制分类带可信区间的折线图
  14. 船用炉灶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. file_get_contents failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
  16. 论文推荐:陈国生 实证化中医基础理论
  17. Shiro(4)整合SpringBoot2.x
  18. OpenGL ES 2.0 for Android教程(六):进入第三维
  19. 耳机插入听不到声音或者对方听不见你说话问题
  20. 王者农药新模式——智慧王者 树形递归

热门文章

  1. matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具
  2. Python len()函数讲解
  3. CSS hack:针对IE6,IE7,firefox显示不同效果
  4. 原码/补码的加减运算and溢出判断
  5. 计算机应用基础在线3,《计算机应用基础》第3阶段在线作业3.docx
  6. 使用C#编写17种Hello World程序(初学者C#测试石)
  7. 哈尔滨五星酒店马桶刷洗杯子事件舆情监测报告
  8. XyplayerX4.0 影视解析源码+解析接口+安装步骤
  9. 好物分享 | 也许是最好用的文件/目录对比软件
  10. 全球顶级手游开发商向数据极客们发出赛事邀请,用数据分析玩家行为,赢取十万大奖!...