【架构师之路】-【01设计模式】-03设计原则之里式替换原则
来源:互联网 发布:pc端淘宝首页不见了 编辑:程序博客网 时间:2024/06/10 17:59
里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。
简单定义为:使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。“抽象”是语言提供的功能。“多态”由继承语义实现。由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象
在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。
里式原则 的注意点为:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
最后总结:里式替换原则就是使用父类类型来定义子类类型;子类 可以扩展父类的功能;但不能修改父类原有的功能!!!
0 0
- 【架构师之路】-【01设计模式】-03设计原则之里式替换原则
- 设计原则之里式替换原则
- 设计模式学习笔记之里式替换原则
- 六大设计原则之里式替换原则
- 【架构师之路】-【01设计模式】-02设计原则之单一职责原则
- 【架构师之路】-【01设计模式】-04设计原则之依赖倒转原则
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则
- 【架构师之路】-【01设计模式】-07设计原则之开闭原则
- 设计模式之设计原则-里氏替换原则
- [设计模式]面向对象设计原则之里氏替换原则
- 设计模式 之里氏替换原则
- 设计模式 之 里氏替换原则 C++
- 设计模式之禅-里氏替换原则
- 设计模式之里氏替换原则
- 【架构师之路】-【01设计模式】-06设计原则之迪米特法则
- (随记三)Android设计模式解析与实战_面对对象六大原则之里式替换原则
- 设计模式6大原则之里氏替换原则
- 设计模式六大原则之里氏替换原则
- JNI异常处理
- 释疑の舍入参数文件介绍
- oracle的索引字段可以设置为空?
- 欢迎使用CSDN-markdown编辑器
- 如何确认手势所在的UI的tag值/以及 can not find file path
- 【架构师之路】-【01设计模式】-03设计原则之里式替换原则
- JS判断元素是否在数组内
- 面试内容
- 样本估计中方差用m-1代替m的理解
- 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
- Windows 10 运行 Linux子系统的图形界面程序
- Eclipse不能不说的秘密:远程Debug
- JAVA多线程和并发基础面试问答(转载)
- elasticsearch and or