Low Coupling

Perché viene scelta una certa classe anziché un'altra?
...

Expert suggerisce di assegnare la responsabilità di conoscere una particolare Square, dato un nome univoco, all'oggetto Board, poiché Board conosce tutte le Square (è l'Information Expert). Ma perché Expert consiglia ciò?

La risposta è data dal pattern Low Coupling (accoppiamento basso).

Cos'è l'accoppiamento?
Un modo per misurare quanto un elemento è fortemente connesso ad altri, li conosce o dipende da essi.

Se esiste un accoppiamento e quindi c'è un elemento che dipende da un altro, quando l'elemento da cui un oggetto dipende subisce una modifica, essa si ripercuote sull'elemento dipendente.

Per esempio una sottoclasse è fortemente accoppiata alla sua superclasse.

Tabella riassuntiva del pattern
...

NomeLow coupling
ProblemaCome ridurre l'impatto dei cambiamenti?
SoluzioneAssegnare le responsabilità in modo che ci sia un accoppiamento basso.

Tale principio può essere utilizzato anche come criterio di scelta tra implementazioni già pronte.

Se si assegnasse l'ottenimento delle Square ad un oggetto arbitrario come Dog, Dog dovrebbe chiedere a Board di restituirgli un certo Square.

Si valutino le due soluzioni:

  • Caso 1: Board è accoppiato a Square
  • Caso 2: Dog è accoppiato a Square (tramite Board) e Board stesso è accoppiato a Square
    Il caso 1 è preferito perché l'accoppiamento risultante è più basso.
Nota

Un accoppiamento basso tende a ridurre il tempo, i costi e i difetti nella modifica del software

Information Expert sostiene Low Coupling
...

Information Expert guida lo sviluppatore verso scelte che sostengono Low Coupling. Expert richiede di trovare l'oggetto che possiede la maggior parte delle informazioni richieste per la responsabilità (per esempio, Board) e di assegnare ad esso la responsabilità.

Se si mette la responsabilità altrove, l'accoppiamento complessivo risulterà più alto.