切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
设计模式
系统设计原则之里氏代换原则
系统设计原则之里氏代换原则
2019-08-18
设计模式
前端之家
前端之家
收集整理的这篇文章主要介绍了
系统设计原则之里氏代换原则
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
403
_0@
之前讲述的“开-闭”原则是系统设计的主原则,做到这点是一件很不容易的工作。但是也不是高不可攀的,除此原则以外还有其他的一些设计原则为实现或者说尽可能的达到“开-闭”提供有效的手段和工具。如果将“开-闭”原则比喻成一个人在移动这一行为的话,那么一下所讲述的原则就好比是人的脚,交通工具等一样,她们都是附属于“开-闭”原则的。让我们先看看里氏代换原则吧!!
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
里氏代换原则 Liskov Substitution Principle LSP
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
里氏代换原则所描述的是任何基类可以出现的地方,子类一定可以出现。“开-闭”原则强调的关键步骤是抽象化,而基类与子类之间的继承关系就是一种抽象化的表现,所以这里所讲述的里氏代换原则就是“开-闭”原则的一个补充,也是对实现抽象化的具体步骤的规范。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
要理解里氏代换原则的
内容
,就要理解类的继承关系:
@H_
403
_3@ @H_
403
_0@
我们知道面向对象中类的特性有继承,封装和多态三大特性。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
继承
@H_
403
_3@ @H_
403
_0@
类,可以分为实体类类型和抽象类类型,而抽象类类型又可分为抽象类和接口;继承可以表现为实体类间继承,实体类和抽象类间以及接口之间的继承。一个类继承另一个类,其中被继承的类成为
父类
,基类,超类。。。相对的那个被成为子类,孩子类。。。。当然子类也可以被其他的类在继承,这时候元子类就相对的成为
父类
,而继承元子类的类就是该类的子类。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
实现了继承,子类就拥有了
父类
的公有的
属性
和
方法
接口,同时子类还可以定义自己所特有的
属性
和
方法
接口。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
封装
@H_
403
_3@ @H_
403
_0@
封装就是包装,将一个类的
属性
进行包装,对外不可见;对自身
属性
可以访问接口,对外事可见;比如getXXX()和setXXX()
方法
,就是所谓的封装。(对于内部类来说,可以直接访问外围类的私有
属性
)通常,将一个类的
属性
设置成私有的,即private;而将
属性
的访问接口声明称公共的,即public。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
实现封装,避免一个模块(即类)直接
修改
或操作另一个模块的数据,也尽可能的做到设计所追求的强内聚(许多
功能
尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的
方法
调用
)。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
多态
@H_
403
_3@ @H_
403
_0@
多态性是指用一个名字定义不同的
函数
,这
函数
执行不同但又类似的操作,从而实现“一个接口,多种
方法
”。 当然这种机制是通过
函数
重载和运算符重载,即静态联编;继承和虚
函数
,即动态联编;来实现的。
@H_
403
_3@ @H_
403
_0@
在java中多态性的表现:重写,重载和覆盖(
父类
对象引用子类对象)
@H_
403
_3@ @H_
403
_0@
1.重写 即
父类
与子类之间的关系。即子类对
父类
中同样签名的
方法
的行为进行重新的定义。
父类
对象和子类对象在
调用
该
方法
的时候可以相互的
屏蔽
,进行执行各自的行为。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
2.重载 即类自身的关系。即在类中定义
方法
名称
相同,但不同参数个数和类型的
方法
(注意
方法
的返回类型不是
方法
签名的一部分)。给出
方法
的
名称
,参数类型以及个数就可以
调用
预定的
方法
了。
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
3.当超类对象引用变量引用子类对象的时候,被引用的对象的类型而不是引用变量的类型决定了
调用
谁的成员
方法
。(
但是这个被
调用
的
方法
必须是在超类中定义过的,也就是说被子类覆盖的
方法
)
@H_
403
_3@ @H_
403
_0@
@H_
403
_3@ @H_
403
_0@
java对象语言中。。。。对象变量本身就是多态的!!!!!!!!!(
具体的
调用
过程,以后再详细的说明。
)
@H_
403
_3@ @H_
403
_0@
由此看出,
父类
的出现的地方,子类一定可以出现。
@H_
403
_3@ @H_
403
_0@
以上介绍比较粗略,敬请包涵,多指正!
@H_
403
_3@ @H_
403
_0@
在编程中寻找快乐,在快乐中自由编程!!!!
@H_
403
_3@
上一篇:信号完整性之:单一网络信号质量
下一篇:单一职责原则--SRP(转)
猜你在找的设计模式相关文章
适配器模式-让不兼容的接口得以适配
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合...
作者:前端之家 时间:2021-02-24
策略模式-定义一个算法族
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独...
作者:前端之家 时间:2021-02-24
设计模式之高质量代码
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的...
作者:前端之家 时间:2021-02-24
模板方法模式-封装一套算法流程
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在...
作者:前端之家 时间:2021-02-24
迭代器模式-统一集合的遍历方式
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
作者:前端之家 时间:2021-02-24
单例模式的五种实现方式及优缺点
单例模式(Singleton Design Pattern)保证一个类只能有一个实例,并提供一个全局访问点。
作者:前端之家 时间:2021-02-24
组合模式-统一的处理个别对象与组合对象
组合模式可以将对象组合成树形结构来表示“整体-部分”的层次结构,使得客户可以用一致的方...
作者:前端之家 时间:2021-02-24
装饰者模式-动态的包装原有对象的行为
装饰者模式能够更灵活的,动态的给对象添加其它功能,而不需要修改任何现有的底层代码。
作者:前端之家 时间:2021-02-24
观察者模式-将消息通知给观察者
观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,当对象状态改变的时候...
作者:前端之家 时间:2021-02-24
代理模式-访问对象的代理而非其本身
代理模式为对象提供一个代理,来控制对该对象的访问。代理模式在不改变原始类代码的情况下...
作者:前端之家 时间:2021-02-24
编程分类
算法
设计模式
多媒体技术
正则表达式
Elasticsearch
Flink
Hadoop
IDE
最新文章
• 适配器模式-让不兼容的接口
• 策略模式-定义一个算法族
• 设计模式之高质量代码
• 模板方法模式-封装一套算法
• 迭代器模式-统一集合的遍历
• 外观模式-简化子系统的复杂
• 单例模式的五种实现方式及
• 组合模式-统一的处理个别对
• 装饰者模式-动态的包装原有
• 观察者模式-将消息通知给观
热门标签
更多 ►
受约束
摘*
day25
Java常用类库
置信
lamda
留存
持续录入
年后
正则表达式30
3.17
regularexpre
匹
多模
适
20130322
基础理论
pathmunge
涵义
reec
tok
需要转义的特
资源分享
validationex
简明魔法
里弄
形如
源码实现
完备
actionscript