Mi chiedo se un oggetto che fa una domanda a un altro oggetto che lo trattiene indirettamente sia un design "cattivo". Ad esempio ...OO Design - L'oggetto fa una domanda alla classe che lo trattiene indirettamente
Requisiti: Il carattere (un oggetto) si sposta su una griglia. Quando tenta di spostarsi in un altro punto, deve sapere se quel punto è già occupato da qualcosa che lo blocca o se quella parte della griglia è completamente inaccessibile. (Nota che il personaggio stesso deve sapere).
Nell'applicazione, uno stato contiene un tilemanager e un character manager. Il tilemanager sa quali mattonelle sono accessibili e quali no. Il character manager conosce le posizioni delle tessere dei personaggi.
Potrebbe essere ragionevole che il carattere richiami una funzione dallo stato, ad esempio AuthorizeMovement
, che determina se il movimento è possibile tramite TileManager e CharacterManager e restituisce true in caso affermativo, false in caso contrario?
Questa violazione di principi importanti può causare problemi lungo la strada?
Ovviamente questo è generalizzato e ridotto a ciò che è necessario per capire il problema.
+1 concordato, non è necessariamente male. Ad esempio un osservatore chiede l'oggetto osservato (che contiene un elenco di tutti gli osservatori) per il suo stato dopo una notifica di stato modificato. Basta fare attenzione a infiniti loop/dead lock –