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 kreacyjne
Wzorce strukturalne
- Adapter
- Dekorator (Decorator)
- Fasada (Facade)
- Płynny interfejs (Fluent Interface)
- Pełnomocnik (Proxy)
Wzorce czynnościowe
- Metoda szablonowa (Template Method)
- Obserwator (Observer)
- Stan (State)
- Strategia (Strategy)
- Wstrzykiwanie zależności (Dependency Injection)
Obrazek wyróżniający do posta: Chen