java与模式--里氏代换原则,依赖倒置原则
一里氏代换原则
1.基类可以出现的地方,子类也可以出现.
2.子类可以替换基类出现的替换,软件的功能行为不改变,则基类可以复用,子类可以扩展基类的功能。
3.例子
<1>正方形继承长方形。这是一种错误的继承方法.
比如:
if(f.getHeight()<=f.getWidth()){
f.setHeight(f.getWidth+1);
}
对于长方形,当高度小于宽度的时候,每次自加1.知道长度和宽度相当,程序停止.
当正方形继承长方形的时候,对于正方形,高度和宽度会一直递加。知道溢出。所有替换长方形的时候,软件的行为不对。所以不应该继承
<2>比如程序中有个表示文件名得字符串,有相应的读取文件名得方法等。我让fileName继承String(String是不可以继承的)。
行为:两个字符串相加还是一个字符串.
fileName类相加特到的不一定是合法的fileName类。对于String中很多适用的方法,对于fileName是不适用的,不能单单为了字符串而去继承.
二依赖倒置原则
1.要依赖于抽象,而不依赖于具体
2.针对抽象编程,而不是针对具体
3.类型的声明:成员变量,局域变量,方法的参数,方法的返回,类型的声明应该使用java接口
4.具体类应该只给出java接口和java抽象类中的方法,而不应该给出多余的方法.
java与模式--里氏代换原则,依赖倒置原则相关推荐
- 设计模式之禅之六大设计原则-依赖倒置原则
依赖倒置原则 依赖倒置原则的原始定义是: ● 高层模块不应该依赖低层模块,两者都应该依赖其抽象; ● 抽象不应该依赖细节; ● 细节应该依赖抽象. 那什么是抽象?什么又是细节呢? ---->在J ...
- 5.里氏代换原则依赖倒置原则
里氏代换原则(LSP):子类型必须能够替换掉它们的父类(子类可以看做父类来使用) 依赖倒置原则:高层模块不应该依赖于低层模块,两个都应该依赖抽象:抽象不应该依赖细节,细节应该依赖抽象.
- java设计模式之设计原则②依赖倒置原则
定义: ⑴高层模块不应该依赖低层模块,二者都应该依赖其抽象 ⑵抽象不应该依赖细节,细节应该依赖抽象 ⑶针对接口编程,不要针对实现编程 我们通过抽象包括使用接口或者抽象类可以使各个类或模块的实现彼此独立 ...
- 软件设计的七大原则 --开闭原则 里氏替换原则 依赖倒置原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本. 这 7 种设计原则是软件设计 ...
- 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)
设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...
- Java 七大设计原则 - 依赖倒置原则/面向接口编程
一.什么是依赖倒置原则(Dependence Inversion Principle, DIP) ? - 面向接口编程(Object-Oriented Design, OOD) (1) 高层模块与低 ...
- php 依赖倒置原则,依赖倒置原则 - LieBrother的个人空间 - OSCHINA - 中文开源技术交流社区...
个人博客原文: 依赖倒置原则 设计模式六大原则之三:依赖倒置原则. 简介 姓名 :依赖倒置原则 英文名 :Dependence Inversion Principle 价值观 :大男子主义的典型代表, ...
- 设计原则——依赖倒置原则
1.全称 Dependence Inversion Principle 缩写为:DIP 2.解释 高层模块不应该依赖低层模块,两者都应该依赖其抽象:抽象不应该依赖细节,细节应该依赖抽象 其核心思想是: ...
- SOLID原则-依赖倒置原则
简介 前面我们已经介绍了 SRP ,单一职责原则 OCP,开闭原则 LSP,里式替换原则 ISP,接口隔离原则 今天来详解依赖倒置原则. 作为一个Java程序员,你可能听说过代码耦合以及被告知应避免代 ...
最新文章
- Scrapy和MongoDB的应用
- 基础知识(三)-网络
- nodejs开发游戏服务器遇到的性能问题
- php 把数组赋给另一个数组,php将一个数组附加到另一个数组(不是array_push或+)
- M1 macbook值得购买吗?关于M1芯片macbook的三点购买建议
- tensorflow MySQL_tensorflow从入门到放弃....
- (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释...
- PERMUTATION
- MyEclipse 8.5配置Tomcat 7.0
- Jmeter (三十)jmeter+ant+jenkins持续集成
- 使用jQuery快速高效制作网页交互特效(1)
- numpy中array的维度之-------一维向量和一维数组的区别。
- 主机不可达和端口不可达
- ad09只在一定范围内查找相似对象_AD09 常用快捷键
- 最简单AS5048a模块鉴别和读取数据
- 唯一分解之Pollard-Rho算法
- 2003服务器开机无限重启,Windows2003 系统自动重启
- 学习篇之数据分析库pandas
- 绕过滑块验证码登陆网站的实现
- Java实现水仙花数简单代码
热门文章
- SwiftUI 问答之更改 TabView 选项卡时如何运行函数
- docker导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or
- 福利啊,精品资源大放送
- XX^{T} 和 X^{T}X 的关系
- 一文带你看透通知短信
- python单词库_python 单词库
- SpringBoot 项目中在Controller 直接调用Mapper,提示:Field mapper in ‘*Controller ‘ required a bean of type ‘*Map
- 科学计算机的圆周率,科学家用超级计算机计算圆周率,到底有什么意义?真能算出来吗?...
- jsliang 陪你瞎叨叨 2
- linux根据端口查找进程,linux根据端口查找进程