2010-09-15 13 views

risposta

8

Generalmente penso al Decoratore come "aggiungere" a qualche cosa, dove come Catena di Responsabilità è più come gestire qualcosa.

Nel confrontare i due modelli (oltre ad essere mele e arance) la più grande differenza è che la catena di responsabilità può uccidere la catena in qualsiasi punto.

Pensa ai decoratori come un'unità stratificata in cui ogni livello esegue sempre la pre/post elaborazione. Chain of Responsibility è più simile a una lista collegata, e generalmente 1 cosa gestisce l'elaborazione.

Il pattern Chain of Responsibility consente a più cose di gestire un evento, ma offre anche la possibilità di interrompere la catena in qualsiasi momento.

+0

potete darmi qualsiasi scenario in quali situazioni vanno per la catena di responsabilità o di Decorator ...? –

+0

@Mind: Come Nix ha detto, le mele e le arance. Invece scrivere quello che si suppone di fare e siamo in grado di aiutare da lì. – Marcus

5

Scenario:

Pensate a una richiesta di servizio (accesso tipicamente amministratore a un computer portatile), che deve essere approvato dal vostro gestore, direttore e VP. In questo caso, il pattern Decorator agirà come se ad ogni livello ci fossero solo commenti da ciascuno di essi e alla fine si otterrebbe un risultato. Quindi, Manager direbbe "Approvato e inoltrato", Simlarly Director "Ok Approved and forwarded" e infine VP "Approved". E il risultato finale sarebbe la combinazione di tutti e 3 i commenti.

Nota: la catena non si spezzerà, indipendentemente dal fatto che la richiesta sia stata approvata o non approvata.

nella catena delle responsabilità, in ogni fase della singola persona ha l'autorità di approvare o respingere. E se a qualsiasi livello la richiesta viene respinta, quindi la richiesta non procede al livello successivo, invece appena termina con il risultato. Spero che questo aiuti :)