Centrum wiedzy o technologiach i pracy w IT
wzorce projektowe

Wzorce projektowe – czym są?

Ostatnia aktualizacja 28 października, 2022

Szybkie rozwiązywanie problemów programistycznych jest cenną umiejętnością w pracy nad kodem. Wiele problemów projektowych jest powtarzalnych, dlatego na bazie ich specyfiki i możliwych rozwiązań powstały wzorce projektowe. Czym są dokładnie? W jaki sposób są zbudowane?

Ostatnia aktualizacja: 28.10.2022. Dodaliśmy przykłady popularnych wzorców projektowych.

Nie udało się zapisać Twojej subskrypcji. Spróbuj ponownie.
Udało się! Widzimy się niebawem – newsletter wysyłamy w każdy wtorek

Otrzymuj za darmo unikalne poradniki, dane i wiedzę o pracy w IT – dostarczane co tydzień

Klikając “Zapisz mnie” wyrażasz zgodę na otrzymywanie e-maili od redakcji, a także ofert partnerów oraz akceptujesz naszą Politykę prywatności.

Wzorce projektowe – definicja

Wzorce projektowe stanowią rozwiązania powtarzalnych problemów projektowych, zatem są opisem uniwersalnego sposobu implementacji rozwiązań programistycznych, który powstał w oparciu o doświadczenie wielu programistów.

Wśród wzorców projektowych można wyróżnić kilkadziesiąt sposobów podzielonych na kategorie. Każda z kategorii dotyczy problemu programistycznego, który może się powtarzać podczas tworzenia różnych projektów.

Celem wzorców projektowych jest przyspieszenie i usprawnienie pracy nad kodem dzięki zastosowaniu najlepszych zebranych rozwiązań, które zostały sprawdzone w praktyce.

Wzorce nie są jednak gotowym do kopiowania kodem, więc nie można ich skopiować bezpośrednio. Stanowią pewną koncepcję, w oparciu o którą programista może zaimplementować optymalne dla projektu rozwiązanie.

Zobacz: Agile

Wzorce projektowe – co się na nie składa?

W skład wzorców projektowych wchodzi kilka sekcji, wśród których wymienia się:

1. Cel , który ogólnie opisuje problem oraz rozwiązanie.

2. Motywację rozszerzającą opis problemu i rozwiązania.

3. Strukturę klas, która uwidacznia sposób powiązania ze sobą różnych części wzorca.

4. Przykładowy kod napisany w wybranym języku programowania, który służy lepszemu zrozumieniu zastosowania danego wzorca.

Klasyfikacja wzorców projektowych

Charakterystyka poszczególnych wzorców projektowych jest zróżnicowana, a więc spośród grup wzorców można wyróżnić trzy główne:

Wzorce kreacyjne

Cechują się elastycznym mechanizmem tworzenia obiektów oraz umożliwiają ponowne wykorzystanie kodu. Dotyczą tworzenia klas, metod, a także typów danych.

Wśród wzorców kreacyjnych znajdują się: Factory Method, Abstract Factory, Builder, Prototype i Singleton.

Wzorce strukturalne

Opisują metody budowania struktur składających się z klas i obiektów, które umożliwiają zachowanie elastyczności.

Do wzorców strukturalnych należą: Adapter, Bridge, Composite, Decorator, Facade, Flyweight i Proxy.

Wzorce behawioralne

Służą do komunikacji oraz podziału zadań między obiektami.

Wzorce behawioralne to: Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method oraz Visitor.

Sprawdź: Zenly

Przykłady popularnych wzorców projektowych

Singleton

Singleton to kreacyjny wzorzec projektowy. Stosując wzorzec singleton możemy zapewnić, że w programie pojawi się jedynie jeden obiekt danej klasy. Wzorzec można zastosować w różnych przypadkach, w których wymagane jest przechowywanie globalnego stanu aplikacji, np. w formie zmiennych. W porównaniu do stosowania zmiennych globalnych wykorzystanie singletona nie zaśmieca globalnej przestrzeni nazw.

Dekorator

Dekorator to przykład strukturalnych wzorców projektowych. Jest alternatywą dla dziedziczenia, w którym rozszerzanie funkcji klasy bazowej jest dokonywane na etapie kompilacji. W przypadku dekoratorów rozwijanie oryginalnej klasy następuje w trakcie działania programu. Dzięki temu uzyskano większą elastyczność niż w przypadku dziedziczenia. Dodatkowym atutem dekoratorów jest możliwość tworzenia klas na wysokich poziomach hierarchii, które nie zawierają nadmiernej liczby metod.

Obserwator / obserwowany

Wzorzec czynnościowy obserwatora / obserwowanego służy do informowania obiektu obserwatora o zmianie stanu obiektu obserwowanego. Zastosowanie wzorca uniezależnia obiekty obserwatora i obserwowanego od siebie. Programista unika w ten sposób tworzenia trudnych do rozbudowy sytuacji, w których zmiany w obrębie jednego obiektu wymagają zmian w innym obiekcie.

Wzorce projektowe – najczęstsze zarzuty

Ze względu na pewien stopień uniwersalności rozwiązań, wzorce projektowe są czasem krytykowane. Najczęściej zwraca się uwagę na trzy główne problemy.

Traktowanie wzorców arbitralnie

Programiści z mniejszym doświadczeniem mogą podchodzić do wzorców projektowania zbyt sztywno. Problemem może być wdrażanie wzorców bez uwzględnienia konieczności elastycznego dopasowania.

Nadmierne wykorzystywanie wzorców

To także problem widoczny u mniej doświadczonych programistów. Poznając temat wzorców projektowych, mogą mieć tendencję do nadmiernego ich wykorzystywania nawet w sytuacjach, w których wystarczy mniej skomplikowany kod.

Wzorce projektowe tuszują problemy, a nie je rozwiązują

Czasami programista nie dopasuje dobrze języka do projektu i wtedy próbuje sobie radzić za pomocą wzorców projektowych, więc w tym wypadku zarzut polega na prowizoryczności takich działań.

Total
0
Shares
_podobne artykuły