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=