S.O.L.I.D

arekborek.blogspot.com 1 dekada temu
Witam,

serdecznie wszystkich po długiej przerwie, postaram się dzisiaj przedstawić bardzo skrótowo zagadnienie S.O.L.I.D, oraz zamieszczę klika linków do zagadnienia;


S.O.L.I.D. Class Design Principles

Zagadnienie zostało przedstawione przez Robert C. Martin w książce „Applying Principles and Patterns”


Single Responsibility Principle (SRP)
Klasa powinna mieć tylko jeden powód do zmiany stanu. o ile klasa zmienia stan z przyczyn biznesowych, to zmiany schematu bazy danych, GUI, formatu raportu, oraz inne zmiany nie powinny wpłynąć na klasę.

http://davidhayden.com/blog/dave/archive/2005/05/29/1066.aspx
http://c2.com/cgi/wiki?SingleResponsibilityPrinciple=
Head First Design patterns page 185, 336, 339, 367
http://msdn.microsoft.com/en-us/magazine/cc546578.aspx
http://codebetter.com/blogs/david_laribee/archive/2008/09/09/why-solid-gimme-an-s.aspx


Open/Closed Principle (OCP)
Encje systemu (klasy, moduły, funkcje, etc.) powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.

http://davidhayden.com/blog/dave/archive/2005/06/04/1096.aspx
http://en.wikipedia.org/wiki/Open/closed_principle
Head First Design patterns page 86-87, 407
http://c2.com/cgi/wiki?OpenClosedPrinciple=
http://codebetter.com/blogs/david_laribee/archive/2008/09/11/why-solid-gimme-an-quot-o-quot.aspx


Liskov substitution principle (LSP)
Podtyp powinien być substytutem typu bazowego. o ile klasa A dziedziczy z klasy B, to tam gdzie możemy użyć klasy A, to też możemy użyć klasy B11

http://davidhayden.com/blog/dave/archive/2005/06/10/1226.aspx
http://c2.com/cgi/wiki?LiskovSubstitutionPrinciple=
http://en.wikipedia.org/wiki/Liskov_substitution_principle
http://javaboutique.internet.com/tutorials/JavaOO/
http://codebetter.com/blogs/david_laribee/archive/2008/09/22/why-solid-gimme-an-l.aspx


Interface Segregation Principle (ISP)
Jedna klasa powinna zależeć od innej, poprzez jak najmniejszy interfejs o ile to możliwe.

http://davidhayden.com/blog/dave/archive/2005/06/15/1482.aspx
http://c2.com/cgi/wiki?InterfaceSegregationPrinciple=
http://www.google.com/search?q=interface+segration+principle
http://doodleproject.sourceforge.net/articles/2001/interfaceSegregationPrinciple.html


Dependency Inversion Principle (DIP)
Klasa powinna być zależna od interfejsu, ale nie od konkretnej klasy.

http://davidhayden.com/blog/dave/archive/2005/06/10/1261.aspx
http://en.wikipedia.org/wiki/Dependency_inversion_principle
Head First Design patterns page 139-143
http://c2.com/cgi/wiki?DependencyInversionPrinciple=
Idź do oryginalnego materiału