第12章 面向对象设计的SOLID原则
许多开发人员对待面向对象编程最常见的陈述之一是,面向对象编程的主要优势在于它可以对现实世界进行建模。我承认在讨论经典的面向对象的概念时经常使用这些词。根据Robert Martin(至少在我在YouTube上观看的一次演讲中)看来,面向对象接近我们思考的方式只是一种简单的营销手段。相反,他指出面向对象是通过反转关键依赖关系来管理依赖,防止出现僵化的代码、脆弱的代码和不可重用的代码。
例如,在经典的面向对象的编程课程中,练习时经常直接将代码建模为现实情况。例如,如果狗is-a(是)哺乳动物,那么这种关系显然是继承。多年来,严格的has-a和is-a测试已成为面向对象思维方式的一部分。
但是,正如我们在本书中所看到的那样,试图强制创造继承关系会导致设计问题(还记得那条不会吠叫的狗吗?)。不论是尝试将不会吠叫的犬与吠叫犬分开,还是将飞鸟与不会飞的鸟分开,都是明智的继承设计选择吗?这些都是面向对象的营销人员实施的吗?好吧,请忘记炒作。正如我们在上一章中看到的那样,也许专注于严格的has-a和is-a决策不一定是最好的方法。也许我们应该更多地关注解耦类。
我之前提到过,Robert Martin(通常称为Bob叔叔)定义了3个术语来描述不可重用的代码:
·刚性——更改程序的某部分可能会破坏另一部分
·易碎性——事情在不相关的地方会出问题
·固定性——代码脱离了原始的上下文就不能被重用
引入SOLID是为了解决这些问题并努力达成设计目标。它定义了Robert Martin引入的五项设计原则,以“使软件设计更加易于理解、灵活和可维护”。据Robert Martin说,尽管SOLID原则适用于任何面向对象设计,但也可以成为诸如敏捷开发或自适应软件开发之类方法论的核心理念。SOLID的首字母缩写是由Michael ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access