Wzorce strukturalne: Adapter, Dekorator, Pełnomocnik Flashcards

1
Q

Wzorce strukturalne

A
  • adapter
  • dekorator
  • fasada
  • kompozyt
  • most
  • pełnomocnik
  • pyłek
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Adapter - nazwy

A

ang. adapter

pol. nakładka
ang. wrapper

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Adapter - kategoria

A
  • obiektowy/klasowy

- strukturalny

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Adapter - Przeznaczenie

A

Przekształca interfejs klasy na inny oczekiwany przez klienta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Adapter - Uzasadnienie

A

Czasem nie można wykorzystać zaprojektowanej klasy, ponieważ ma niezgodny interfejs. Często spotykane w bibliotekach zewnętrznych kiedy nie znamy zasady ich działania.

Możemy wtedy napisać klasę która będzie dopasowywała niezgodność do naszych oczekiwań (rozwiązanie klasowe) lub stworzyć obiekt który będzie dysponować odpowiednim interfejsem (rozwiązanie obiektowe).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Adapter - Warunki stosowania

A
  • Jeśli jest potrzeba wykorzystania klasy ale jej interfejs nie pasuje do tego który jest potrzebny;
  • kiedy chcesz utworzyć klasę wielokrotnego użytku współdziałającą z niepowiązanymi lub nieznanymi klasami;
  • jeżeli trzeba użyć kilku istniejących podklas, ale dostosowywanie ich interfejsów przez utworzenie dla każdej z nich następnej podklasy jest niepraktyczne;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Adapter – Elementy i współdziałanie

A

• ElementDocelowy (Target):
- definiuje specyficzny dla dziedziny interfejs używany przez Klienta.
• Klient (Client):
- współdziała z obiektami zgodnymi z interfejsem klasy ElementDocelowy.
• ElementAdaptowany (Adaptee):
- definiuje istniejący interfejs, który trzeba dostosować.
• Adapter (Adapter):
- dostosowuje interfejs klasy ElementAdaptowany do interfejsu klasy ElementDocelowy.

Klienty wywołują operacje egzemplarzy klasy Adapter. Z kolei adapter wywołuje operacje klasy ElementAdaptowany, które obsługują żądanie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Adapter – Konsekwencje (klasowy)

A
  • Dostosowuje klasę ElementAdaptowany do klasy ElementDocelowy przez dopasowanie się do klasy konkretnej ElementAdaptowany; powoduje to, że adapter klasowy nie zadziała, jeśli zechcemy dostosować klasę oraz wszystkie jej podklasy;
  • umożliwia przesłonięcie w klasie Adapter wybranych działań klasy ElementAdaptowany (dzieje się tak, ponieważ Adapter to podklasa klasy ElementAdaptowany);
  • powoduje dodanie tylko jednego obiektu, a uzyskanie dostępu do dostosowywanej klasy nie wymaga dodatkowego poziomu pośredniego w postaci wskaźnika.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Adapter – Konsekwencje (obiektowy)

A
  • Umożliwia współdziałanie jednej klasy Adapter z wieloma klasami ElementAdaptowany (czyli z samą klasą ElementAdaptowany i z wszystkimi jej podklasami, jeśli takie istnieją); w klasie Adapter można też dodać funkcje do wszystkich klas ElementAdaptowany jednocześnie;
  • utrudnia przesłanianie zachowań z klasy ElementAdaptowany; wymaga to utworzenia podklasy klasy ElementAdaptowany i wskazywania w klasie Adapter tej podklasy zamiast samej klasy ElementAdaptowany.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Adapter – Powiązane wzorce

A
  • most - ma podobną strukturę, ale inne funkcje - ma rozdzielić interfejs od implementacji
  • dekorator - pozwala wzbogacać inne obiekty bez zmiany ich interfejsu, więc jest bardziej przeźroczysty, umożliwia składanie rekurencyjne, czego adapter nie umożliwia
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Dekorator - Nazwa

A

ang. decorator

pol. nakładka
ang. wrapper

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Dekorator - Kategoria

A
  • obiektowy,

- strukturalny

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Dekorator - Przeznaczenie

A

Dynamiczne dodawanie funkcjonalności do obiektów.

Jest to alternatywa do dziedziczenia które rozszerza zachowanie w trakcie kompilacji, w przeciwieństwie do dekoratora który rozszerza klasy w czasie wykonywania programu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Dekorator - Uzasadnienie

A

• Najczęstszym przykładem jest okno które będzie w jakiś sposób ozdabiane. Można dodać do niego pasek przewijania bądź ramkę. Można to uczynić poprzez dziedziczenie po klasie dodającej obramowanie, jednak wtedy wszystkie obiekty będą tę ramkę posiadać przez to rozwiązanie jest nieelastyczne.
Dekorator pozwala umieszczać obiekt w innym obiekcie który doda wspomnianą ramkę lub pasek przewijania (również oba naraz).

• Interfejs dekoratora musi być zgodny z interfejsem ozdabianego obiektu, dzięki temu jest przeźroczysty i umożliwia rekurencyjne zagnieżdżanie dekoratorów.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Dekorator - Warunki stosowania

A
  • kiedy zadania poszczególnych obiektów mają być dodawane w sposób dynamiczny i przeźroczysty
  • jeśli tworzenie wielu podklas jest niepraktyczne
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Dekorator – Elementy i współdziałanie

A

• Komponent (Component):
- definiuje interfejs obiektów do których można dynamicznie dodawać obsługę zadań
• KonkretnyKomponent (ConcreteComponet):
- definiuje obiekt do którego można dołączyć obsługę zadań
• Dekorator (Decorator):
- przechowuje referencję do obiektu Komponent i definiuje interfejs zgodny z interfejsem klasy
Komponent
• KonkretnyDekorator (ConcreteDecorator):
- dodaje zadania do komponentu

Obiekt Dekorator przekazuje żądania do powiązanego z nim obiektu Komponent. Opcjonalnie może też wykonywać dodatkowe operacje przed przesłaniem żądania lub po.

17
Q

Dekorator - Konsekwencje

A
    • zapewnia większą elastyczność niż statyczne dziedziczenie
    • pozwala uniknąć tworzenia przeładowanych funkcjami klas na wysokich poziomach hierarchii.
    • dekorator i powiązany z nim komponent nie są identyczne
    • powstawanie wielu małych obiektów
18
Q

Dekorator - Implementacja

A
  • zgodność z interfejsem (dziedziczenie po wspólnej klasie Komponent)
  • pomijanie klasy abstrakcyjnej Dekorator (jeśli jest potrzebny tylko jeden KonkretnyDekorator)
  • tworzenie prostych klas Komponent (dziedziczą po tym dekoratory, nie chcemy żeby były zbyt ciężkie)
  • zmiana “skórki”, a modyfikowanie mechanizmów (patrz: strategia - wzorce operacyjne)
19
Q

Dekorator – Powiązane wzorce

A
  • adapter - dekorator modyfikuje jedynie zadania obiektu, a nie jego interfejs
  • kompozyt - dekorator dodaje nowe zadania i nie jest przeznaczony do łączenia obiektów (można traktować jako uproszczony komponent)
  • strategia - dekorator umożliwia zmianę “skórki” obiektu, do modyfikowania mechanizmów służy strategia
20
Q

Pełnomocnik

A

ang. proxy

pol. substytut
ang. surrogate

21
Q

Pełnomocnik - kategoria

A

obiektowy,

strukturalny

22
Q

Pełnomocnik - Przeznaczenie

A

Udostępnia obiekt zastępujący inny obiekt w celu kontrolowania dostępu.

23
Q

Pełnomocnik - Uzasadnienie

A
  • Odroczenie ponoszenia pełnych kosztów tworzenia i inicjowania obiektu do momentu kiedy będzie potrzebny.
  • Edytor w którym obiekty obrazów tworzone są tylko w momencie wyświetlania. Niewidoczne obrazy są tylko zastępczymi.
24
Q

Pełnomocnik - Warunki stosowania

A
  • kiedy jest potrzeba tworzenia kosztownych obiektów na żądanie;
  • kontrola dostępu do obiektu;
  • inteligentne zliczanie referencji prowadzących do pierwotnego obiektu (jak spada do 0, można zwolnić pamięć).
25
Q

Pełnomocnik - Elementy i współdziałanie

A

• Pełnomocnik (Proxy):
- przechowuje referencję umożliwiającą dostęp do RzeczywistegoObiektu
- udostępnia interfejs identyczny z interfejsem do klasy Obiekt
- kontroluje dostęp do RzeczywistegoObiektu
• Obiekt (Subject):
- definiuje wspólny interfejs klas Pełnomocnik i RzeczywistyObiekt, dzięki temu obiektów Proxy można używać wszędzie tam gdzie oczekiwane są obiekty RzeczywistyObiekt
• RzeczywistyObiekt (RealSubject):
- definiuje rzeczywisty obiekt reprezentowany przez Pełnomocnika

26
Q

Pełnomocnik - Konsekwencje

A
  • pośrednik może ukrywać, że obiekt znajduje się w innej przestrzeni adresowej;
  • może umożliwiać tworzenie obiektów na żądanie;
  • zabezpieczenie dostępu;
  • inteligentne referencje umożliwiają wykonywanie dodatkowych operacji.
27
Q

Pełnomocnik - Implementacja

A

• Pełnomocnik nie zawsze musi znać typ rzeczywistego obiektu

28
Q

Pełnomocnik – Powiązane wzorce

A
  • adapter - adapter służy do tworzenia nowego interfejsu, pełnomocnik ma ten sam;
  • dekorator - inne przeznaczenie, dekorator dodaje zadania do obiektu, pełnomocnik kontroluje dostęp