设计模式的七大原则——开闭原则(下)
开闭原则: 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已
有的代码来实现变化。
开闭原则代码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方法即可,使用方的代码就不需要修改,满足了开闭原则;
设计模式的七大原则——开闭原则(下)相关推荐
- 设计模式6大原则-开闭原则
设计模式6大原则-开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则理念就是当需求改变时,希望在不改变原有代码的前提下,通过扩展模块.函数来满足新需求. 开闭原则是其他 ...
- 设计模式之王者原则 开闭原则
设计模式之王者原则 开闭原则 为什么说 它--开闭原则是王者原则呢? 因为所有原则都是围绕它来实现的,怎么说呢,为什么会有这么多原则呢,都是为了完成它,只要实现它你的代码就不会有什么大的问题 一.定 ...
- 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)
前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...
- 六大设计原则--开闭原则
定义 software entities like classes, modules and functions should be open for extension but closed for ...
- Java设计模式七大原则-开闭原则
开闭原则 基本介绍 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构建框 ...
- 设计模式七大原则——开闭原则
1.什么是开闭原则? 开闭原则(Open Closed Principle)是编程中最基础.最重要的设计原则. 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方).用抽象构 ...
- 【设计模式】软件设计七大原则 ( 开闭原则 )
文章目录 一.开闭原则简介 二.开闭原则代码示例 1.商品接口 2.普通商品类 3.折扣商品类 4.测试类 一.开闭原则简介 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 ...
- 软件设计的七大原则 --开闭原则 里氏替换原则 依赖倒置原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本. 这 7 种设计原则是软件设计 ...
- 学习设计模式 - 六大基本原则之开闭原则
设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...
最新文章
- @aspect注解类不生效_springboot:@Transactional注解 VS @Service注解
- React技术栈——webpack
- python列表可以加可以乘
- nhibernate mysql配置_NHibernate各种数据库连接参数文件配置方法说明
- python登录系统的实现方法_python实现简单登陆系统
- 计算机网络应用简介_计算机网络简介
- Java基础(四)——异常、断言、日志
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
- 【AWVS12】安全漏洞扫描工具,使用详解
- ToStringBuilder.reflectionToString用法
- 【华为HCIE安全考什么科目?华为HCIE安全考什么知识点?】
- 微信公众号自动回复如何添加超链接
- Stata绘制分类带可信区间的折线图
- 船用炉灶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- file_get_contents failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
- 论文推荐:陈国生 实证化中医基础理论
- Shiro(4)整合SpringBoot2.x
- OpenGL ES 2.0 for Android教程(六):进入第三维
- 耳机插入听不到声音或者对方听不见你说话问题
- 王者农药新模式——智慧王者 树形递归
热门文章
- matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具
- Python len()函数讲解
- CSS hack:针对IE6,IE7,firefox显示不同效果
- 原码/补码的加减运算and溢出判断
- 计算机应用基础在线3,《计算机应用基础》第3阶段在线作业3.docx
- 使用C#编写17种Hello World程序(初学者C#测试石)
- 哈尔滨五星酒店马桶刷洗杯子事件舆情监测报告
- XyplayerX4.0 影视解析源码+解析接口+安装步骤
- 好物分享 | 也许是最好用的文件/目录对比软件
- 全球顶级手游开发商向数据极客们发出赛事邀请,用数据分析玩家行为,赢取十万大奖!...