设计模式(4) --里氏替换原则

简介: 设计模式(4) --里氏替换原则

产生原因:继承时子类重写引起的问题


1dc618a0ed9580ce8bfa6facb208c08f.png


什么是里氏替换原则


5d4c6812c8535adbb050f4ddf2e1bce8.png

看了解释更不知道啥意思。其实关键就是一句话 子类中尽量不要去写重写父类已经实现的方法,可以通过聚合,组合,依赖来解决问题.


举例说明


不遵循里氏替换原则的案例


类图

1dc618a0ed9580ce8bfa6facb208c08f.png

代码

5d4c6812c8535adbb050f4ddf2e1bce8.png

运行结果:

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

显然,用户可能会混淆子类和父类重写方法的结果!!!!


改进方案


类图

1dc618a0ed9580ce8bfa6facb208c08f.png

代码

5d4c6812c8535adbb050f4ddf2e1bce8.png

运行结果:

46a9d80a6e05e4e3b19d57a0ee70bcdf.png


完美


相关文章
|
5月前
|
设计模式
设计模式 六大原则之里氏替换原则
设计模式 六大原则之里氏替换原则
|
6月前
|
设计模式 Java 开发者
Java设计模式七大原则之里氏替换原则
Java设计模式七大原则之里氏替换原则
53 0
|
设计模式
设计模式七大原则——里氏替换原则
设计模式七大原则——里氏替换原则
设计模式七大原则——里氏替换原则
|
设计模式
设计模式(六)之里氏替换原则
里氏替换原则,为继承定义规范。 里氏替换原则有如下特点:代码共享,减少创建类的工作量、提高代码的重用性、提高代码的可扩展性、提高产品代码的开放性、继承侵入性 只要继承,必须拥有父类的内容、降低代码的灵活性,子类必须拥有父类的属性和方法、增强耦合性。
199 0
设计模式(六)之里氏替换原则
|
设计模式 Java
【Java设计模式】如何正确的使用继承?里氏替换原则的使用
【Java设计模式】如何正确的使用继承?里氏替换原则的使用
【Java设计模式】如何正确的使用继承?里氏替换原则的使用
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
206 0
|
设计模式
设计模式—— 二:里氏替换原则
设计模式—— 二:里氏替换原则
123 0
设计模式—— 二:里氏替换原则
|
设计模式 安全 Java
可能是最好的设计模式入门教程——里氏替换原则
可能是最好的设计模式入门教程——里氏替换原则
388 0
可能是最好的设计模式入门教程——里氏替换原则
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 代码示例 | 类示例 | 方法入参示例 | 方法返回值示例 )(一)
【设计模式】软件设计七大原则 ( 里氏替换原则 | 代码示例 | 类示例 | 方法入参示例 | 方法返回值示例 )(一)
112 0
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 代码示例 | 类示例 | 方法入参示例 | 方法返回值示例 )(三)
【设计模式】软件设计七大原则 ( 里氏替换原则 | 代码示例 | 类示例 | 方法入参示例 | 方法返回值示例 )(三)
102 0

热门文章

最新文章

  • 1
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    45
  • 2
    C++一分钟之-C++中的设计模式:单例模式
    51
  • 3
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    36
  • 4
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    59
  • 5
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    54
  • 6
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    39
  • 7
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    49
  • 8
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    102
  • 9
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    74
  • 10
    Go语言设计模式:使用Option模式简化类的初始化
    71