2011-10-22 11 views

Odpowiedz

88

Dekorator to raczej "dodajmy do niego jakąś funkcjonalność". Prezenter jest raczej "zbudujmy pomost między modelem/backendem a widokiem". Wzorzec prezentera ma kilka interpretacji.

Dekoratory mają charakter ogólny/ogólny. Prezenterzy mają węższy zakres obowiązków/zastosowań. Dekoratory są używane w różnych domenach, prezenterzy są prawie zawsze związani z funkcjonalnością podobną do widoku.

+3

Dzięki. Wygląda na to, że klejnot Draper to hybryda prezentera i dekoratora. – keruilin

+16

@keruilin Należy pamiętać o jednej rzeczy: dekoratorzy powinni naprawdę być w stanie udekorować inne dekoratory (jak również ozdobić obiekt składowy), ponieważ jednym z ich celów jest obejście ograniczeń dziedziczenia. (Draper ma * nie * rób to). Wzorzec dekoratora jest w tym sensie bardzo podobny do wzoru kompozytowego, z tym wyjątkiem, że jest obsługiwany z zewnątrz zamiast wewnątrz (jeśli ma to sens). – Smudge

+5

Widzę dekoratora jako wzorzec ogólnego przeznaczenia i prezentera jako konkretną aplikację dekoratora związaną z warstwą widoku. – Kris

29

Proponuję to sprawdzić - Exhibit vs Presenter.

Dekorator to wzorzec projektowy służący do rozszerzenia funkcjonalności określonego obiektu poprzez jego zawinięcie, bez wpływu na inne wystąpienia tego obiektu. Generalnie wzór dekoratora jest przykładem modelu open/close principle (klasa jest zamknięta dla modyfikacji, ale dostępna dla rozszerzeń).

Zarówno wzory eksponatu, jak i prezentera są rodzajem wzoru dekoratora.

+0

+1 za link do tego posta na blogu Mike Pack. Doskonała wiadomość, która wyjaśnia różnice między wzorami. – ki4jnq

+0

+1 za wzmiankę o wzorze wystawy. W końcu dostałem książkę Avdiego Grimm, która to wyjaśnia. Chociaż nie było to właściwe rozwiązanie mojego problemu, nadal jest to niesamowity wzorzec. Doskonałe jedzenie do przemyślenia. – Yonk