php wzorce projektowe

Wzorce projektowe

Wzorzec projektowy (ang. design pattern) to uniwersalny i sprawdzony schemat rozwiązania jakiegoś powtarzającego się problemu programistycznego (w odniesieniu do programowania obiektowego). Wzorzec wymusza pewien standard pisania kodu, tak aby był on prosty w modyfikacji, zrozumiały a jednocześnie skalowalny. W skrócie to najlepsze techniki programistyczne.

BANDA CZTERECH (GoF)

Autorami pierwszej znanej publikacji poświęconej wzorcom w inżynierii oprogramowania byli: Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides, znani jako Banda Czterech (ang. Gang of Four).

SOLID

Z wzorcami projektowymi związane są zasady dobrego programowania, zwane SOLID. Koncepcję tą zaproponował “mentor” programowania i autor wielu słynnych publikacji – Robert Cecil Martin (Wujek Bob). Kodeks SOLID ma na celu wytwarzanie “czystego” i łatwo rozszerzalnego kodu, odpornego na błędy.

  • [S] Single Responsibility Principle (SRP) – zasada jednej odpowiedzialności. Klasa powinna mieć tylko jedną odpowiedzialność (nigdy nie powinien istnieć więcej niż jeden powód do modyfikacji klasy).
  • [O] Open/Closed Principle (OCP) – zasada otwarte/zamknięte. Klasy powinny być otwarte na rozszerzenia i zamknięte na modyfikacje.
  • [L] Liskov Substitution Principle (LSP) – zasada podstawiania Liskov. Korzystanie z funkcji klasy bazowej musi być możliwe również w przypadku podstawienia instancji klas pochodnych.
  • [I] Interface Segregation Principle (ISP) – zasada segregacji interfejsów. Wiele dedykowanych interfejsów jest lepsze niż jeden ogólny.
  • [D] Dependency Inversion Principle (DIP) – zasada odwrócenia zależności. Wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych, zależności między nimi powinny wynikać z abstrakcji.

Poniżej lista niektórych wzorców, wraz z przykładową implementacją.

WZORCE PROJEKTOWE


Wzorce kreacyjne

Wzorce strukturalne

Wzorce czynnościowe


Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *