Dato una classe come:
class State {
bool IsLessThan(State);
int data;
};
Il metodo State::IsLessThan(State)
può semplicemente confrontare data
in ogni classe secondo una logica. Tuttavia, supponiamo che i dati all'interno di State
cambino durante lo sviluppo e mantengano diversi tipi predefiniti di gruppi di dati che il cliente decide di aggiungere allo stato. Un modo per implementare questo è:
class State {
void Add(StateData);
bool IsLessThan(State);
Set<StateData> data;
};
Dove una classe derivata di StateData
può essere considerata come struct
con alcuni dati. Supponiamo che se State
non contiene un tipo di StateData
, ha un'istanza creata con valori predefiniti. Ogni volta che un nuovo tipo di StateData
viene aggiunto al programma, la logica e quindi il codice in State::IsLessThan(State)
dovranno essere modificati.
Supponiamo che la preoccupazione principale qui sia l'estensibilità dell'architettura. Questo può essere migliorato? Mi manca una soluzione migliore?