Wzorce projektowe to sposoby myślenia o programowaniu.
Stanowią one zbiór porad, gotowych rozwiązań, najlepszych praktyk i spostrzeżeń na temat rozwoju. Dla każdego paradygmatu programowania i typu zadania istnieją pewne wzorce projektowe, które są najodpowiedniejsze.
W programowaniu rozwiązywanie pewnych typów problemów jest powtarzalne, więc sensowne jest wybranie jednej metody rozwiązywania tych problemów i powtarzanie tej metody.
Główna korzyść pojawia się zwłaszcza podczas pracy zespołowej, gdy wszyscy wiedzą, jak będzie tworzona aplikacja (według jakiego wzorca projektowego) i po prostu go stosują. Eliminuje to niepotrzebne dziesiątki godzin spędzonych na debugowaniu dziwnie napisanego kodu i próbach zrozumienia zasad, którymi kierował się autor.
Moim ulubionym wzorcem projektowym jest MVC
(od Model View Controller
), który mówi, że aplikacja jest podzielona na 3 niezależne warstwy, które wywołują się nawzajem sekwencyjnie i przekazują sobie dane.
Na przykład, podczas renderowania strony, może to wyglądać tak, że najpierw decyduje ona, jakiego typu jest to strona (na przykład szczegóły kategorii), więc wywołuje CategoryController
z metodą detail
.
Konkretny przykład (bardzo upraszczam):
class CategoryController{public CategoryManager $categoryManager;public function actionDetail(string $id): void{$this->template->id = $id;$this->template->category = $this->categoryManager->getById($id);}}
Uwaga:
To jest tylko przykładowy kod, który wyjaśnia zasadę działania wzorca projektowego
MVC
.W prawdziwej implementacji musielibyśmy dalej kombinować, jak, na przykład, uzyskać instancję
CategoryManager
i jak przekazać ją do właściwości. Zazwyczaj do tego typu zadań stosuje sięwstrzykiwanie zależności
.
Przed wyrenderowaniem strony dla szczegółów kategorii, najpierw wywoływany jest CategoryController
, który odbiera faktyczne żądanie (tzn. renderujemy szczegóły kategorii o określonym ID, które jest uzyskiwane przez router, na przykład w adresie URL), pobiera dane (odpytując odpowiedni Model
) i przekazuje ostateczne dane do szablonu w celu wyrenderowania.
Ogromną zaletą tej zasady jest możliwość pisania wielu modeli (logiki aplikacji), które są niezależne od sposobu prezentacji danych (szablonu), co daje w efekcie kod wielokrotnego użytku. W rzeczywistości, jeśli chcemy użyć CategoryManager
w innym projekcie, po prostu przepuszczamy dane przez Controller
w określony sposób, który zostanie wyrenderowany zgodnie z szablonem zdefiniowanym przez sam projekt, podczas gdy logika aplikacji pozostaje taka sama i nikogo to nie obchodzi, ponieważ warstwa oprogramowania wypełniła swój uzgodniony interfejs i obowiązki.
Uwaga praktyczna:
Wzorzec projektowy
MVC
jest używany przez większość nowoczesnych frameworków, takich jak Nette, Symfony, Laravel i inne.Z
MVC
możemy się również spotkać przy tworzeniu aplikacji mobilnych i innych rodzajów oprogramowania, w których musimy pobierać dane i renderować je w szablonie zgodnie z typem strony lub widoku.
Generalnie w programowaniu istnieje wiele wzorców projektowych, które nie nadają się do tworzenia stron internetowych. Na tej liście opisano najważniejsze wzorce, z których sam korzystam i które powinieneś znać.
Na osobnej stronie można znaleźć pełną listę wszystkich wzorców projektowych, przykłady ich użycia oraz szczegółowe wyjaśnienia.
Model
(logika aplikacji i dane), Widok
(szablon i widok danych) oraz Kontroler
(łączący Model
i Widok
).Dependency injection
, gdzie każda usługa ma tylko jedną instancję, która jest przekazywana przez całą aplikację).Adapter
konwertuje dane z jednego typu na drugi (zazwyczaj konwertuje natywne typy danych PHP na typy danych bazy danych i z powrotem).Istnieje wiele innych wzorców projektowych, ale te są najważniejsze, które powinieneś znać.
Niektóre techniki programowania są uważane za antypattern
, co jest dokładnym przeciwieństwem wzorca projektowego. Zwykle jest to technika, która tworzy dziwny kod, którego nie da się łatwo debugować, utrzymywać i który zachowuje się magicznie
.
Typowym przykładem jest użycie zmiennych globalnych.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl