Ho un'interfaccia ICondition
che definisce solo un singolo metodo, IsConditionMet
Funziona bene poiché è l'unica informazione che l'entità genitore ha bisogno dalle sue condizioni.
Tuttavia, c'è una situazione in cui un utente deve rimuovere una condizione specifica dal suo genitore che sto cercando di trovare un modo elegante per implementarlo.
Entrambe le classi che implementano questa interfaccia capita di utilizzare un identificatore GUID al momento, ma non c'è alcun motivo intrinseco per cui questo dovrebbe essere il caso e potrebbe essere soggetto a modifiche; le due classi non hanno realmente nulla in comune oltre a essere predicati.
Una possibile soluzione potrebbe essere quella di sovrascrivere il metodo Equals
nelle classi e restituire true quando viene passato l'ID. Tuttavia, per me, questo sembra non essere perfettamente in linea con l'intento del metodo e viola il principio del minimo stupore.
Un'altra soluzione potrebbe essere creare un'interfaccia IIdentifiable
con un metodo, IdentifiesAs
quindi ereditare ICondition
da esso. Tuttavia, sembra che vada contro lo SPI dell'ISP poiché qualsiasi implementatore di ICondition
deve ora implementare anche IIdentifiable
.
Qualcuno ha qualche indicazione per attenersi all'ISP pur essendo in grado di identificare univocamente un oggetto? Sto pensando troppo a questo?