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?