说到面向对象编程,有一个原则几乎每个程序员都知道,那就是 SOLID 原则。关于它的资料介绍也非常丰富,实践例子也很多。但实际上你很可能把 SOLID 原则都用错了,并且还无意识地一直在滥用它。
之所以这么说,一方面是因为很多时候你都将每一个原则分开使用,容易造成过度解读。比如,在使用接口隔离原则时容易只关心接口,而忽略不同实现,或者不关心接口之间的关系以及和整体系统之间的关系。另一方面是因为它总是能让你无意识地将简单的问题复杂化。比如,明明只需要写一个一次性同步数据的方法,然后写完即扔,但是突然想到 SOLID 原则,于是又搞出来十几个多余的类。有了锤子,总是容易想去找钉子,殊不知有时就完全不需要锤子,只需要一把小刀即可解决问题。
那么 SOLID 原则到底长什么样子?各原则之间有什么联系和区别?该如何正确理解呢?今天,我们就来一起学习下这五大面向对象设计原则,也就是我们所说的 SOLID 原则。
一、五大设计原则概览
2000 年,Robert C. Martin 在他的《设计原理和设计模式》这一论文中首次提出 SOLID 原则的概念。然后,在过去的 20 年中,这 5 条原则彻底改变了面向对象编程的世界,改变了我们编写软件的方式。
SOLID 原则的核心理念是帮助我们构建可维护和可扩展的软件。因为随着软件规模的扩大,一个人维护所有的代码越来越困难,这时就需要更多的人来维护代码,而多人协作的关键在于相互通信与协作,恰好 SOLID 原则提供了这样一个框架。
“SOILD”是由五大原则的英文首字母拼写而成,具体对应情况如下。