SOLID (物件導向設計)

助记符缩写面向对象设计

程式設計領域, SOLID單一功能、開閉原則、里氏替換、介面隔離以及依賴反轉)是由羅伯特·C·馬丁在21世紀早期[1] 引入的記憶術首字母縮略字[2][3],指代了物件導向程式設計物件導向設計的五個基本原則。當這些原則被一起應用時,它們使得一個程式設計師開發一個容易進行軟體維護和擴充的系統變得更加可能。[1] SOLID所包含的原則是通過引發程式設計者進行軟體原始碼代碼重構進行軟體的代碼異味清掃,從而使得軟體清晰可讀以及可延伸時可以應用的指南。SOLID被典型的應用在測試驅動開發上,並且是敏捷開發以及自適應軟體開發的基本原則的重要組成部分。[1][4]

概述

首字母 指代 概念
S 單一功能原則 認為「對象應該僅具有一種單一功能」的概念。
O 開閉原則 認為「軟體應該是對於擴充開放的,但是對於修改封閉的」的概念。
L 里氏替換原則 認為「程式中的對象應該是可以在不改變程式正確性的前提下被它的子類所替換的」的概念。

參考契約式設計

I 介面隔離原則 認為「多個特定客戶端介面要好於一個寬泛用途的介面」[5] 的概念。
D 依賴反轉原則 認為一個方法應該遵從「依賴於抽象而不是一個實例」[5] 的概念。
依賴注入是該原則的一種實現方式。

參考

基本概念以及相關主題

設計和開發原則

參照

  1. ^ 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.
  2. ^ 「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.
  3. ^ 「Getting a SOLID start.」頁面存檔備份,存於網際網路檔案館), Robert C. Martin (「Uncle Bob」), objectmentor.com. Last verified 2009-01-14.
  4. ^ 「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. ^ 5.0 5.1 「Design Principles and Design Patterns」頁面存檔備份,存於網際網路檔案館), Robert C. Martin (「Uncle Bob」), objectmentor.com. Last verified 2009-01-14.