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ę
CategoryManageri 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
MVCjest używany przez większość nowoczesnych frameworków, takich jak Nette, Symfony, Laravel i inne.Z
MVCmoż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 a novinky nejen ze světa PHP a programování. Nenechte si ujít jediný článek.
Články píše Jan Barášek © 2009-2025 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl