第 11 章 面向对象设计原则(下)
朱雷
在上一章中,我通过一个具体的爬虫案例介绍了 SOLID 设计原则的前两条:SRP 与 OCP。相信你可以感受到,它们都比较抽象,代表面向对象设计的某种理想状态,而不与具体的技术名词直接挂钩。这意味着,“开放–关闭”“单一职责”这些名词,既可以形容类,也可以形容函数。
而余下的三条原则稍微不同,它们都和具体的面向对象技术有关。
SOLID 原则剩下的 LID 如下。
L:Liskov substitution principle(里式替换原则,LSP)。
I:interface segregation principle(接口隔离原则,ISP)。
D:dependency inversion principle(依赖倒置原则,DIP)。
LSP 是一条用来约束继承的设计原则。我在第 9 章中说过,继承是一种既强大又危险的技术,要设计出合理的继承关系绝非易事。在这方面,LSP 为我们提供了很好的指导。遵循该原则,有助于我们设计出合理的继承关系。
ISP 与 DIP 都与面向对象体系里的接口对象有关,前者可以驱动我们设计出更好的接口,后者则会指导我们如何利用接口让代码变得更易扩展。
但如前所述,Python 语言不像 Java,并没有内置任何接口对象。因此,我的诠释可能会与这两条原则的原始定义略有出入。
关于 LID 就先介绍到这里,接下来我会通过具体的代码案例逐条诠释它们的详细含义。
11.1 LSP:里式替换原则
在 SOLID 所代表的 5 条设计原则里,LSP 的名称最为特别。不像其他 4 条原则,名称就概括了具体内容,LSP 是以它的发明者——计算机科学家 Barbara Liskov——来命名的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了面向对象设计原则中的Liskov替换原则(LSP),接口隔离原则(ISP)和依赖倒置原则(DIP)。通过Python代码案例,生动地阐述了LSP原则的重要性和实际应用。文章指出了LSP的违反情况,并提出了针对违反LSP的解决办法。作者通过具体的案例分析,展示了子类对象能够替代父类对象而不破坏程序原本功能的重要性。此外,文章还探讨了子类方法的返回值与参数违反LSP的情况,并提出了相应的解决方案。文章还介绍了依赖倒置原则(DIP),强调了模块间的依赖关系应该是单向的,一个高层模块往往会依赖多个低层模块。整篇文章通过深入的技术讲解和案例分析,为读者提供了全面的面向对象设计原则的知识,对于软件开发人员和面向对象设计者具有重要的参考价值。 此外,文章还介绍了接口隔离原则(ISP),强调了接口的使用方不应该依赖任何它不使用的方法。通过案例分析,展示了更丰富的接口协议可能带来更高的实现成本和麻烦。ISP的违反会导致实现方面临更高的实现成本和麻烦。文章通过具体案例分析,生动地阐述了ISP原则的重要性和实际应用,对读者了解和应用面向对象设计原则具有一定的指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 工匠:案例、技巧与工程实践》
《Python 工匠:案例、技巧与工程实践》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论