Information Expert

Problema: chi conosce un certo tipo di oggetto, dato un suo identificatore?
...

Il pattern corrente è uno dei principi di base per l'assegnazione delle responsabilità nella progettazione a oggetti.

Si supponga che alcuni oggetti debbano essere in grado di trovare un particolare Square, dato il suo nome univoco. Chi deve essere responsabile di conoscere una Square, dato il suo identificatore? Si tratta di una responsabilità di conoscere, ma Expert si applica anche alle responsabilità di fare.

Come per Creator qualunque oggetto potrebbe essere delegato a questo compito,
Anche in questo caso l'oggetto Board è il candidato migliore. L'oggetto Board deve essere al corrente delle informazioni che riguarda gli Square che crea.

Tabella riassuntiva del pattern
...

NomeInformation Expert
ProblemaQual è un principio base per assegnare responsabilità agli oggetti?
SoluzioneAssegnare una responsabilità alla classe che possiede le informazioni necessarie per soddisfarla.

Una responsabilità necessità di informazioni per essere soddisfatta. In questo caso, per poter recuperare e presentare una qualsiasi Square (dato il suo nome), quale oggetto deve conoscere tutti gli oggetti Square. Precedentemente, grazie a Creator è stato stabilito che una Board aggregherà e conterrà gli Square. Pertanto Board possiede le informazioni necessarie per soddisfare questa responsabilità.

Pasted image 20230516160846.png

Applicare UML
...

  • L'oggetto software Board contiene tutti gli oggetti Square mediante l'utilizzo dell'oggetto sqs: Map<Square>. Quest'oggetto è una collezione di tipo Map che consente di associare ad una chiave, un oggetto di tipo Square (in questo caso).
  • La variabile s nel messaggio iniziale getSquare() e la variabile s restituita dalla get fanno riferimento allo stesso oggetto.
  • L'espressione s = get(name) : Square indica che il tipo di s è un riferimento a un'istanza di Square.