设计模式原则之二:开闭原则
开闭原则定义 :一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
开闭原则总结:面对需求,对程序的改动是通过增加新代码进行的,而不是改变原来的代码。
我们前面提到的模板方法模式和观察者模式都是开闭原则的极好体现
从到
代码如下(其实就是模板模式):
package com.google.desingn;
//银行业务员接口,是所有银行业务员的抽象父类。
public interface BankWorker {
public void operation();
}
package com.google.desingn;
//负责存款业务的业务员
public class SavingBankWorker implements BankWorker {
public void operation() {
System.out.println("进行存款操作");
}
}
package package com.google.desingn;
// 负责取款业务的业务员
public class DrawingBankWorker implements BankWorker{
public void operation() {
System.out.println("进行取款操作");
}
}
package com.google.desingn;
public class TestClass {
public static void main(String[] args) {
BankWorker bankWorkerSave = new SavingBankWorker();
bankWorkerSave.operation();
BankWorker bankWorkerDraw= new DrawingBankWorker();
bankWorkerDraw.operation();
}
}
设计模式原则之二:开闭原则相关推荐
- 软件设计七大原则实战(二)-开闭原则
1 开闭原则的定义 开闭原则是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统,先来看开闭原则的定义: Software entities like classes,modu ...
- 从零开始学习Java设计模式 | 软件设计原则篇:开闭原则
从本讲开始,咱们就要开始学习第一章中的第三部分内容,即软件设计原则了. 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件 ...
- java开闭原则_什么是开闭原则?如何实现开闭原则
2015-04-13 06:30:01 阅读( 137 ) 开闭原则的解释就是:软件实体应当对扩展开放,对修改关闭,也就是:软件系统中包含的各种组件,例如模块(Modules).类(Classes)以 ...
- 开闭原则——面向对象设计原则,使用开闭原则解决实际问题
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本.我们将在下面的几节中依次来介绍 ...
- 学习设计模式 - 六大基本原则之开闭原则
设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...
- 设计模式之禅之开闭原则
声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 开闭原则(Open Closed Principle):对扩展开放,对修改关闭 1.定义: 软件实 ...
- 大话设计模式 第四章 开闭原则 优惠券
定义 对扩展开放 对修改关闭 多态走起 里式替换约束 问题 每天早上小红去买早餐 早餐20元钱 老板每天给了它张优惠券 优惠券可以当天用 小红要付多少钱 上来就直接干 第一天 老板给了她张1元优惠券 ...
- 七大设计原则(一):开闭原则
参考慕课网视频<Java设计模式精讲>: 视频作者:Geely 视频链接:https://coding.imooc.com/lesson/270.html#mid=17147 定义 一个软 ...
- 设计原则之【开闭原则】
文章目录 什么是开闭原则 简单实例 实战实例 如何理解"对修改关闭"?修改代码就一定违背开闭原则吗 参考资料 什么是开闭原则 开闭原则的英文全称是 Open Closed Prin ...
最新文章
- python中3or5什么意思_示例详解Python3 or Python2 两者之间的差异
- 系列教程丨用 Docker 探索开源软件 —— PostgreSQL(一)
- 在EXT中向弹窗传值或者对象
- ORA-27041: unable to open file--恢复被rm意外删除数据文件
- SqlDataAdapter.Update批量数据更新
- dubbo分布式系统链路追踪_zipkin
- excel 導入數據庫的代碼
- 帝国cms清除html标签,帝国CMS如何删除清空旧数据让栏目文章ID从1开始起(一)...
- 2010年c语言上机题库,2010年全国计算机等级考试二级C语言上机题库
- Web前端:2022年7大React组件库
- Java实现 LeetCode 383 赎金信
- 我是一个几乎没有计算机知识的人,怎样入门计算机?
- 我的小感悟(个人愚见)
- LT-mapper,LT-SLAM代码运行与学习
- 【vm】虚拟机版本管理
- win命令行设置定时关机
- freemarker/ftl模板/导出doc 单元格合并注意事项
- Git - git push origin master 报错的解决方法
- PyHook3安装(亲测有用)
- Python爬取链家网获取二手房数据并调用高德api获得经纬度
热门文章
- 华为机试HJ23:删除字符串中出现次数最少的字符
- OpenCV-扩充图像边界cv::copyMakeBorder
- 有没有软件能限制cpu的使用符合_电脑使用中突然黑屏是什么原因?电脑突然黑屏但是主机还运行的解决方法...
- linux关于管道通信,球热心人帮忙 关于linux环境下管道通信
- py导入包异常跳出_马克的Python学习笔记#模块和包
- 性能测试——loadrunner_添加多个主机发送请求
- 单片机并口应用实验c语言,用51单片机编写一个并行口实验
- linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...
- java适应性自旋锁_深夜!小胖问我,什么是自旋锁?怎么使用?适用场景是啥?...
- fiddler和F12的区别