Kolejnym z
omawianych wzorców kreacyjnych jest Prototyp (Prototype). Zastosowanie tego wzorca umożliwia tworzenie nowych
obiektów na podstawie już istniejących, których nazywamy prototypami. Polega to
na kopiowaniu już istniejących instancji i modyfikowanie ich, zamiast tworzenia
nowych. Wykorzystywany jest najczęściej, gdy potrzebujemy utworzyć dużą liczbę
obiektów tego samego typu lub obiektów o podobnych właściwościach. Dodatkowo,
warto zauważyć, że kopiowanie gotowego obiektu jest szybsze niż tworzenie
nowego.
Struktura
Uczestnicy
- Prototyp - deklaruje interfejs do klonowania siebie;
- Konkretny prototyp - klasa, która implementuje metodę klonowania siebie;
- Klient - wywołuje metodę Prototypu, która klonuje go.
Do implementacji
tego wzorca tworzy się klasę abstrakcyjną z metodą służącą do kopiowania
instancji. Metoda ta jest implementowana przez klasy dziedziczące, rozszerzając
ją o swoje warunki i parametry wymagane do stworzenia zmodyfikowanego klonu.
Konsekwencje
- Pozwala na dynamiczne dodawanie i usuwanie obiektów (w czasie działania kodu);
- przyspiesza powoływanie do życia dużych obiektów;
- pracując na kopi obiektu unikamy ryzyka możliwości zmodyfikowania danych pierwotnego obiektu.
Zastosowanie
- Gdy chcemy tworzyć nowego obiekty na podstawie już istniejących, ewentualnie rozszerzając ich właściwości;
- gdy chcemy mieć możliwość przywrócenia obiektu do stanu, w którym się pierwotnie znajdował;
- gdy chcemy uniezależnić system od sposobu w jakim tworzone są w nim produkty;
- gdy nie chcemy tworzyć w budowanej aplikacji podklas obiektu budującego;
- gdy stan obiektów klasy może przyjmować tylko jedną z kilku różnych wartości – chcemy mieć możliwość tworzenia wielu podobnych obiektów, które mogą być łatwo modyfikowane.
Przykład
Przykładem może być projektowanie systemu dla biblioteki, w którym potrzeba jest tworzenia obiektów książek z określonej kategorii książek o podobnych parametrach, różniących się jedynie nieznacznymi szczegółami, np. tytuł, liczba stron.
Brak komentarzy:
Prześlij komentarz