SOLID

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by ClueBot NG (talk | contribs) at 15:37, 8 October 2018 (Reverting possible vandalism by 50.234.199.46 to version by 79.183.14.59. Report False Positive? Thanks, ClueBot NG. (3501462) (Bot)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In object-oriented computer programming, the term SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable. It is closely related to the GRASP software design principles. The principles are a subset of many principles promoted by Robert C. Martin.[1][2][3] Though they apply to any object-oriented design, the SOLID principles can also form a core philosophy for methodologies such as agile development or adaptive software development.[3] The theory of SOLID principles was introduced by Martin in his 2000 paper Design Principles and Design Patterns,[2][4] although the SOLID acronym itself was introduced later by Michael Feathers.[5]

Concepts

Single responsibility principle[6]
a class should have only a single responsibility (i.e. changes to only one part of the software's specification should be able to affect the specification of the class).
Open/closed principle[7]
"software entities … should be open for extension, but closed for modification."
Liskov substitution principle[8]
"objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract.
Interface segregation principle[9]
"many client-specific interfaces are better than one general-purpose interface."[4]
Dependency inversion principle[10]
one should "depend upon abstractions, [not] concretions."[4]

See also

References

  1. ^ Robert C. Martin. "Principles Of OOD". butunclebob.com. Retrieved 2014-07-17.. (Note the reference to “the first five principles”, though the acronym is not used in this article.) Dates back to at least 2003.
  2. ^ a b Robert C. Martin. "Getting a SOLID start". objectmentor.com. Retrieved 2013-08-19.
  3. ^ a b Sandi Metz (May 2009). "SOLID Object-Oriented Design". Retrieved 2009-01-15. Talk given at the 2009 Gotham Ruby Conference.
  4. ^ a b c Robert C. Martin (2000), "Design Principles and Design Patterns" (PDF), objectmentor.com, archived from the original (PDF) on 6 September 2015, retrieved 2009-01-14 {{citation}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  5. ^ Fenton, Steve (2017). Pro TypeScript: Application-Scale JavaScript Development. p. 108. ISBN 9781484232491.
  6. ^ "Single Responsibility Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 1 June 2015. {{cite web}}: |archive-date= / |archive-url= timestamp mismatch; 2 February 2015 suggested (help); Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  7. ^ "Open/Closed Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  8. ^ "Liskov Substitution Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  9. ^ "Interface Segregation Principle" (PDF). objectmentor.com. 1996. Archived from the original (PDF) on 5 September 2015. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  10. ^ "Dependency Inversion Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)