Przejdź do treści

Design Patterns, Hit czy Kit?

    Wzorce Projektowe

    Co to jest Wzorzec Projektowy (Design Pattern)?

    Zacznijmy od garści teorii, czym w zasadzie jest wzorzec projektowy? Po co w ogóle coś takiego jak wzorzec projektowy?

    W programowaniu obiektowym wzorzec projektowy jest to opis rozwiązania problemu. Dla powtarzalnych problemów opracowano sprawdzone w praktyce i uniwersalne rozwiązania opisujące zależności i powiązania między klasami i obiektami których “problem” dotyczy. Warto zaznaczyć, że nie skupiają się na funkcjonowaniu poszczególnych elementów.

    Zalety Wzorców Projektowych

    • bogatszy o wiedzę, łatwiej dostosujesz gotowe rozwiązania zamiast “wynajdywać koło na nowo”,
    • usprawnia komunikację w zespole – podanie nazwy wzorca jest o wiele szybsze niż tłumaczenia całego algorytmu
    • ułatwia tworzenie, utrzymanie i modyfikację kodu źródłowego
    • znajomość daje dodatkowe punkty na rozmowach kwalifikacyjnych
      – nie tylko wykucie teorii, ale też zrozumienie i umiejętność dopasowania i zastosowania odpowiedniego wzorca
    • standaryzacja kodu poprawia jego czytelność, a także wydajność
    • wypróbowane rozwiązania problemów, mogą przyspieszyć proces rozwoju oprogramowania

    Wady Wzorców Projektowych

    • stosowanie wzorców projektowych bez dopasowania do kontekstu projektu
    • stosowanie wzorców projektowych “na siłę” gdzie tylko się da, pomimo, że wystarczyłby prostszy kod
    • nieumiejętne bądź nieodpowiednie zastosowanie wzorców, może przynieść negatywne skutki:
      • w samym działaniu kodu,
      • wydłużenie czasu tworzenia kodu,
      • utrudnić późniejsze jego utrzymanie.

    Wzorzec Projektowy – Konstrukcja

    Na Wzorzec Projektowy składają się jego cztery główne elementy:

    • Nazwa – możliwie unikalna i opisująca idee wzorca.
    • Problem – określenie warunków, w których zastosowanie wzorca ma sens oraz sposoby rozpoznawania takich sytuacji.
    • Rozwiązanie – wskazówki implementacyjne połączone z opisem danego rozwiązania – relacje i powiązania poszczególnych klas i obiektów.
    • Konsekwencja – zestawienie zalet i wad zastosowania wzorca

    Wzorzec Projektowy – Podział

    Podział wzorców projektowych w oparciu o dwa modele klasyfikacji wzorców przedstawione w „Inżynieria oprogramowania: Wzorce Projektowe” bazuje na kategoryzacji według zakresów stosowania wzorca (dla obiektów, czy dla klas) oraz rodzaju wzorca, opisując to co on robi. 

    W wyniku tych kategoryzacji otrzymujemy podział na:

    • Wzorce Strukturalne
      • Zachowując efektywność i elastyczność kodu, pozwala składać większe struktury z klas i obiektów
      • Adapter, Dekorator, Fasada, Kompozyt, Most, Pełnomocnik, Pyłek
    • Wzorce Kreacyjne
      • Zwiększają elastyczność i ułatwiają ponowne wykorzystanie kodu. Są źródłem różnych narzędzi tworzenia obiektów
      • Budowniczy, Fabryka Abstrakcyjna, Metoda Wytwórcza, Prototyp, Singleton
    • Wzorce Operacyjne/Czynnościowe
      • Podział zadań między obiektami i algorytmy
      • Łańcuch odpowiedzialności, Polecenie, Interpreter, Iterator, Mediator, Memento, Metoda Szablonowa, Obserwator, Strategia, Wizytator

    Szerszy podział wzorców i więcej o samych wzorcach znajdziesz w eBooku, który możesz otrzymać klikając w okładkę poniżej. Konkretnymi wzorcami i ich analizą zajmę się w kolejnych wpisach.

    Podsumowanie

    W programowaniu nie ma jednego dobrego rozwiązania. Nie ma złotego środka do osiągnięcia celu. W każdym wypadku ważna jest równowaga i analiza zalet i wad. Warto się zastanowić, czy jest sens stosowania wzorca, czy może wystarczy prosty kawałek kodu który zrealizuje pożądaną logikę?

    Zainteresował Cię materiał? Zapisz się do newslettera w prawym panelu, by być na bieżąco z kolejnymi opracowaniami wzorców oraz aktualnościami na blogu.

    Opracowano na podstawie: “Design Patterns: Elements of Reusable Object-Oriented Software, ​ISBN 978-0-201-63361-0​.”

    Subskrybuj
    Powiadom o
    guest
    1 Komentarz
    Najstarsze
    Najnowsze Najwięcej głosów
    trackback
    4 lata temu

    […] czy Singleton to wzorzec który pasuje do Twojego problemu, czy może inny Wzorzec Projektowy byłby lepszy, a może prosty kod będzie odpowiedni […]