Kreacyjny wzór - Creational pattern

W inżynierii oprogramowania , kreacyjnych wzorców projektowych wzorce projektowe , które dotyczą tworzenia obiektów mechanizmów, starając się tworzyć obiekty w sposób odpowiedni do sytuacji. Podstawowa forma tworzenia obiektów może powodować problemy projektowe lub zwiększać złożoność projektu. Kreacyjne wzorce projektowe rozwiązują ten problem, w jakiś sposób kontrolując tworzenie tego obiektu.

Kreacyjne wzorce projektowe składają się z dwóch dominujących pomysłów. Jedną z nich jest hermetyzacja wiedzy o tym, jakich konkretnych klas używa system. Innym jest ukrywanie, w jaki sposób instancje tych konkretnych klas są tworzone i łączone.

Kreacyjne wzorce projektowe są dalej kategoryzowane na wzorce tworzenia obiektów i wzorce tworzenia klas, gdzie wzorce tworzenia obiektów zajmują się tworzeniem obiektów, a wzorce tworzenia klas zajmują się tworzeniem klas. Mówiąc bardziej szczegółowo, wzorce tworzenia obiektów odkładają część tworzenia obiektu na inny obiekt, podczas gdy wzorce tworzenia obiektów odkładają tworzenie obiektów do podklas.

Pięć dobrze znanych wzorców projektowych, które są częścią wzorców kreacyjnych, to

  • Abstrakcyjny wzorzec fabryki , który udostępnia interfejs do tworzenia powiązanych lub zależnych obiektów bez określania konkretnych klas obiektów.
  • Wzorzec konstruktora , który oddziela konstrukcję złożonego obiektu od jego reprezentacji, dzięki czemu ten sam proces konstrukcji może tworzyć różne reprezentacje.
  • Wzorzec metody Factory , który umożliwia klasie odroczenie tworzenia instancji do podklas.
  • Wzorzec prototypowy , który określa rodzaj obiektu do utworzenia przy użyciu prototypowej instancji i tworzy nowe obiekty poprzez klonowanie tego prototypu.
  • Wzorzec singleton , który zapewnia, że ​​klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do niej.

Definicja

Wzorce kreacyjne mają na celu oddzielenie systemu od tego, jak jego obiekty są tworzone, składane i reprezentowane. Zwiększają elastyczność systemu w zakresie tego, co, kto, jak i kiedy tworzyć obiekty.

Stosowanie

Ponieważ współczesna inżynieria oprogramowania zależy bardziej od składu obiektów niż dziedziczenia klas, nacisk przenosi się z zachowań związanych z twardym kodowaniem w kierunku definiowania mniejszego zestawu podstawowych zachowań, które można skomponować w bardziej złożone. Zachowania związane ze sztywnym kodowaniem są nieelastyczne, ponieważ wymagają zastąpienia lub ponownego wdrożenia całości w celu zmiany części projektu. Ponadto kodowanie na stałe nie promuje ponownego wykorzystania i utrudnia śledzenie błędów. Z tych powodów wzorce kreacyjne są bardziej przydatne niż zachowania związane z twardym kodowaniem. Kreatywne wzory sprawiają, że projekt staje się bardziej elastyczny. Zapewniają różne sposoby usuwania jawnych odwołań w konkretnych klasach z kodu, który musi je utworzyć. Innymi słowy, tworzą niezależność dla obiektów i klas.

Rozważ zastosowanie wzorców twórczych, gdy:

  • System powinien być niezależny od sposobu tworzenia jego obiektów i produktów.
  • Zestaw powiązanych obiektów jest przeznaczony do użytku razem.
  • Ukrywanie implementacji biblioteki klas lub produktu, ujawnianie tylko ich interfejsów.
  • Konstruowanie różnych reprezentacji niezależnych obiektów złożonych.
  • Klasa chce, aby jej podklasa zaimplementowała utworzony przez nią obiekt.
  • Instancje klas są określane w czasie wykonywania.
  • Musi istnieć jedna instancja, do której klient ma zawsze dostęp.
  • Instancja powinna być rozszerzalna bez modyfikowania.

Struktura

Diagram klas Wzorca tworzenia.

Poniżej znajduje się prosty diagram klas, który jest wspólny dla większości wzorców twórczych. Zwróć uwagę, że różne wzorce twórcze wymagają dodatkowych i różnych klas uczestniczących.

Uczestnicy :

  • Twórca : deklaruje interfejs obiektu. Zwraca obiekt.
  • ConcreteCreator : implementuje interfejs obiektu.

Przykłady

Oto kilka przykładów kreatywnych wzorców projektowych:

  • Wzorzec fabryki abstrakcyjnej : klasa żąda wymaganych obiektów od obiektu fabryki zamiast bezpośrednio tworzyć obiekty
  • Wzorzec metody fabrycznej : scentralizuj tworzenie obiektu określonego typu, wybierając jedną z kilku implementacji
  • Wzorzec konstruktora : oddziel konstrukcję złożonego obiektu od jego reprezentacji, aby ten sam proces budowy mógł tworzyć różne reprezentacje
  • Wzorzec iniekcji zależności : klasa akceptuje obiekty, których wymaga od wtryskiwacza, zamiast bezpośrednio tworzyć obiekty
  • Leniwy wzorzec inicjalizacji : taktyka opóźniania tworzenia obiektu, obliczania wartości lub innego kosztownego procesu do momentu, gdy jest to potrzebne po raz pierwszy
  • Wzorzec puli obiektów : unikaj kosztownego pozyskiwania i zwalniania zasobów poprzez recykling obiektów, które nie są już używane
  • Wzorzec prototypowy : używany, gdy typ obiektów do utworzenia jest określony przez prototypową instancję, która jest klonowana w celu utworzenia nowych obiektów
  • Wzorzec singleton : ogranicz tworzenie instancji klasy do jednego obiektu

Zobacz też

Bibliografia