Decorator:
- aggiungere un comportamento di opporsi in fase di esecuzione. L'ereditarietà è la chiave per ottenere questa funzionalità, che è allo stesso tempo il vantaggio e lo svantaggio di questo modello.
- Migliora il comportamento dell'interfaccia.
- Il decoratore può essere visualizzato come un composito degenerato con un solo componente. Tuttavia, un decoratore aggiunge ulteriori responsabilità: non è inteso per l'aggregazione di oggetti.
- Il decoratore supporta la composizione ricorsiva
- La classe Decorator dichiara una relazione di composizione con l'interfaccia LCD (Lowest Class Denominator) e questo membro di dati è inizializzato nel suo costruttore.
- Decorator è progettato per consentire di aggiungere responsabilità agli oggetti senza sub-classing
Fare riferimento alla sourcemaking articolo per ulteriori dettagli.
diagramma UML di decoratore da wikipedia: Reticolo
Ponte:
- Bridge schema strutturale
- astrazione e attuazione non sono vincolati in fase di compilazione
- Astrazione e implementazione zione - entrambi possono variare senza impatto nel client
Utilizzare il modello di ponte quando:
- si desidera eseguire in tempo vincolante dell'attuazione,
- voi hanno una proliferazione di classi derivanti da un accoppiato interfaccia e numerose implementazioni,
- se si desidera condividere un'implementazione tra più oggetti, è necessario mappare gerarchie di classi ortogonali.
diagramma UML Ponte da wikipedia:
Dal diagramma UML, si può osservare la differenza:
Nel modello decoratore, decoratore sta attuando componenti, che sarà essere sostituito da ConcreteComponent in fase di esecuzione.
Nel modello Bridge, RedefinedAbstraction non sta implementando Implementor. Invece, utilizza la composizione in modo che Implementor possa variare dinamicamente in fase di esecuzione senza la conoscenza del client.
Decoratore non può disaccoppiare l'astrazione dall'implementazione a differenza del modello Bridge.
qualche post più utili:
When to Use the Decorator Pattern?
When do you use the Bridge Pattern? How is it different from Adapter pattern?
fonte
2016-05-30 07:34:55
Decorator può anche aggiungere metodi di convenienza per l'interfaccia che si sta decorando. –
Sì. Questo è un ottimo punto.Avevo dimenticato che –