# resources:diagrams:projects:generic:development_view:SOLID #
* [[../|(UP)]]
{{indexmenu>.#2|nsort tsort}}
## Summary ##
@startuml
!includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt
title SOLID Development Patterns
class "Single\nResponsibility\Principle" as SRP
class "Open\nClose\nPrinciple" as OCP
class "Liskov's\nSubstition\nPrinciple" as LSP
class "Interface\nSegragation\nPrinciple" as ISP
class "Dependency\nInversion\nPrinciple" as DIP
SRP -[HIDDEN]RIGHT- OCP
OCP -[HIDDEN]RIGHT- LSP
LSP -[HIDDEN]RIGHT- ISP
ISP -[HIDDEN]RIGHT- DIP
note bottom of SRP
An object should have
one and only one reason
to change, meaning
that a class should
have only one job.
endnote
note bottom of OCP
Objects should be
open for extension,
but closed for
modification.
endnote
note bottom of LSP
Code to the most
abstract
representation
(ie, a base class).
endnote
note bottom of ISP
clients should not
be forced to implement/use
interface/methods
they do not require.
endnote
note bottom of DIP
Entities must depend
on abstractions not
on concretions.
(JGI).
endnote
@enduml