Design Pattern e Pattern Observer

Design Pattern e Pattern Observer

L’observer è un design pattern comportamentale e rappresenta perciò un pattern di collaborazione tra oggetti (di design).

Lo scopo è quello di definire una dipendenza uno a molti tra oggetti in modo tale che se un oggetto cambia il suo stato, tutti gli oggetti ad esso legati siano “avvisati” di questo cambiamento e aggiornati. La finalità è quella di mantenere un buon grado di affidabilità del progetto.

Può essere usato in un’astrazione, una classe che presenta due aspetti tra loro vincolati. Vado a incapsulare gli aspetti in due oggetti distinti che potranno essere usati indipendentemente. Una modifica a un oggetto comporta la modifica di altri oggetti e quindi un elevato accoppiamento. Posso risolvere questo problema con l’Observer, svincolando i vari oggetti in modo tale che gli altri non debbano essere modificati.

Oppure quando un oggetto deve notificare agli altri determinate situazionio senza conoscere l’identità precisa degli altri oggetti.

La struttura è la seguente:

Ingegneria del software e Design Pattern - Struttura Observer
Ingegneria del software e Design Pattern – Struttura Observer

Il Subject è l’elemento che conosce i propri observer, può avere un numero qualunque di Observer che ne controllano i comportamento e pertanto ha un’interfaccia per ciascuno di essi.

L’observer fornisce l’interfaccia di notifica per gli oggetti che devono essere informati dei cambiamenti del subject. Il concrete Subject fornisce lo stato a cui tutti gli oggetti sono interessati e il Concrete observer fornisce il collegamento con il Concrete Subject.

Pattern Observer e Strategy a confronto

Mentre l’observer risolve un problema di comunicazione tra oggetti, lo strategy è importante perchè ci permette di definire una famiglia di algoritmi senza definire una sottoclasse figlia di una superclasse. In maniera molto snella e dinamica incapsula in alcuni oggetti determinati algoritmi e poi sceglie se utilizzarne uno anzichè un altro. L’algoritmo incapsulato è detto strategy e si usa quando abbiamo classi quasi uguali che differiscono nel comportamento. Infatti si ha bisogno di più varianti dell’algoritmo ma la classe implemnetata non cambia.

Precedente Design Pattern e Pattern Adapter Successivo Individuare uno sniffer nella rete

Lascia un commento

*