SOLID (面向对象设计)
在程式设计领域, SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期[1] 引入的记忆术首字母缩略字[2][3],指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。[1] SOLID所包含的原则是通过引发程式设计者进行软件原始码的代码重构进行软件的代码异味清扫,从而使得软件清晰可读以及可扩展时可以应用的指南。SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分。[1][4]
概述
首字母 | 指代 | 概念 |
---|---|---|
S | 单一功能原则 | 认为“对象应该仅具有一种单一功能”的概念。 |
O | 开闭原则 | 认为“软件应该是对于扩展开放的,但是对于修改封闭的”的概念。 |
L | 里氏替换原则 | 认为“程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的”的概念。
参考契约式设计。 |
I | 接口隔离原则 | 认为“多个特定客户端接口要好于一个宽泛用途的接口”[5] 的概念。 |
D | 依赖反转原则 | 认为一个方法应该遵从“依赖于抽象而不是一个实例”[5] 的概念。 依赖注入是该原则的一种实现方式。 |
参考
基本概念以及相关主题
设计和开发原则
引用
- ^ 1.0 1.1 1.2 “SOLID Object-Oriented Design” (页面存档备份,存于互联网档案馆), Sandi Metz (Duke University), Talk given at the 2009 Gotham Ruby Conference in May, 2009. Last verified 2009-01-15.
- ^ “Principles Of OOD” (页面存档备份,存于互联网档案馆), Robert C. Martin (“Uncle Bob”), butunclebob.com, Last verified 2009-01-14. (Note the “first five principles”, though the acronym is not used in this article.) Dates back to at least 2003.
- ^ “Getting a SOLID start.” (页面存档备份,存于互联网档案馆), Robert C. Martin (“Uncle Bob”), objectmentor.com. Last verified 2009-01-14.
- ^ “Introducing SOLID Object-Oriented Design Principles and Microsoft Unity”[永久失效链接], Uwe Schmitz, Presentation given at the Regina .NET User Group in May, 2009. Last verified 2009-01-14.
- ^ 5.0 5.1 “Design Principles and Design Patterns” (页面存档备份,存于互联网档案馆), Robert C. Martin (“Uncle Bob”), objectmentor.com. Last verified 2009-01-14.