Sono ancora un principiante quando si tratta di design di dominio, e sto cercando di modellare qualcosa come il sistema di battaglia di un RPG come un contesto limitato. Sto provando a modellare un contesto limitato in cui un Combatant ha una lista di abilità, e ciascuna Abilità ha una lista di effetti che si applicherebbe. Ad esempio, un effetto comune sarebbe infliggere danno al Combattente bersaglio.
Per quanto posso dire, le due radici aggregate sarebbero Combatant e Ability, con Effect che è un oggetto value.
Ora, non sono sicuro di dove mettere la mia logica per l'interazione tra Combattenti. In particolare, avrò bisogno di una logica che gestisca l'esecuzione di un'abilità tenendo conto del Combattente sorgente e del Combattente bersaglio. Allo stesso modo, avrò bisogno di una logica simile per gli effetti individuali di un'abilità. Poiché l'azione e gli effetti sono causati da un'istanza di un Combattente e stanno prendendo di mira una seconda istanza di Combattente, non penso che la logica debba essere eseguita all'interno del Combatant aggregato stesso.
Il problema è che semplicemente non so dove dovrebbe andare la logica. Inizialmente pensavo che un servizio di dominio sarebbe stato il posto giusto, ma dopo averli studiati, penso che potrei essermi sbagliato. Qualcuno ha qualche idea su dove dovrei mettere questa logica?