Ho una situazione in cui alcuni comandi utilizzano alcuni metodi comuni. Questi sono stati originariamente sviluppati in un unico comando e ora sono utili per altri comandi, possono essere statici e autonomi.
public Command1 : ICommand
{
// does something specific to some records
// tidying up fields before they go to the db
public static void DoSomePreRecordManuipulation(List<record> records)
{
//
}
public static void DoSomeMoreCommonThings(List<record> records)
{
//
}
public void Execute()
{
...
DoSomePreRecordManuipulation(someRecords);
...
//SaveDbChanges();
}
}
public command2 : ICommand
{
public void Execute()
{
...
BlahCommand.DoSomePreRecordManuipulation(someRecords);
...
SaveDbChanges();
}
}
Come puoi vedere dall'esempio sopra, command2
chiama semplicemente il metodo statico da command1
. Tuttavia, supponiamo che ci siano altri metodi e alcuni altri comandi coinvolti.
Caveat : There is little chance of these being used many more times, but this might arise
Inoltre, questi metodi riguardano solo una mano piena di comandi e metodi comuni e sono nella loro sfera di influenza.
Quindi mi chiedo se dovrei.
- Inietta il comando principale in altri comandi per accedere a questi metodi
- Rendi statici i metodi e fai riferimento direttamente al comando per i suoi metodi statici
- crea una classe helper statica in modo che i metodi più comuni (se necessario di nuovo) siano più facili da trovare (e non vadano a fondo nelle profondità di CQRS)
- crea una classe base per incapsulare la logica (che diventerebbe un po 'ingestibile se è necessaria più composizione
I miei pensieri
- sembra un odore
- sembra difficile da trovare.
- sembra un po 'troppo categorizzato, è utile averli come aiuto, ma i loro valori sembrano limitati
- hrmm (forse)