Post

Bridge

In Design Patterns on febbraio 6, 2010 by poyblog Messo il tag:

Intento:

Disaccoppiare l’astrazione dalla sua implementazione in modo tale che le due parti possano variare indipendentemente.

Applicabilità:

E’ utile sfruttare il pattern Bridge quando

  • si vuole evitare un legame permanente fra implementazione ed astrazione. Per esempio implementazioni che devono essere cambiate a run-time
  • sia le astrazioni che le implementazioni potrebbero essere estese dalla sotto-classificazione
  • si vuole che cambiamenti a livello di implementazione non abbiano effetto sui Client
  • (caso del C++) si vuole nascondere l’implementazione ai Client
  • c’è una proliferazione di classi, e la gerarchia indica il bisogno di spezzare l’oggetto in due parti.
  • si vuole condividere una implementazione per vari oggetti, e tale implementazione potrebbe essere nascosta ai Client

Partecipanti:

  • Abstraction → definisce l’interfaccia dell’astrazione e mantiene il riferimento verso un oggetto di tipo Implementor
  • RefinedAbstraction → estende l’interfaccia definita da Abstraction
  • Implementor → definisce l’interfaccia per le classi di implementazione. Tale interfaccia non deve corrispondere appieno alla interfaccia di Abstraction. Solitamente l’interfaccia di Implementor fornisce solo le operazioni primitive, e Abstraction definisce operazioni di alto livello che sfruttano tali primitive.
  • ConcreteImplemetor → implementa l’interfaccia di Implementor e definisce la sua concreta implementazione.

Conseguenze:

  • c’è il disaccoppiamento fra implementazione e interfaccia
  • viene accresciuta la capacita di estensione
  • vengono nascosti i dettagli dell’implementazione ai Client

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.