Ho una simulazione che funziona a una determinata altezza ed una temperatura specifica:Quale modello di progettazione utilizzare per generare più simulazioni?
interface IGeneratable
{
string Name { get; }
void Generate();
}
interface ISimulation : IGeneratable
{
int Height { get; }
int Temperature { get; }
}
Il processo Generate()
per una simulazione in genere comporta più passaggi:
void Generate()
{
Step1();
Step2();
Step3();
}
Ora, è possibile per l'utente per specificare più altezze e/o più temperature.
In questo caso, vengono generate diverse simulazioni (sub-simulazioni), una per ogni combinazione di altezza/temperatura. Metodo
interface IMultiSimulation : IGeneratable
{
ISimulation[] SubSimulations { get; }
}
Tuttavia, in questo caso, il sub-simulazione Generare() si discosta dall'ordine Step1, Step2, Fase 3:
- Se vengono specificati più temperature, quindi
Step2()
deve essere eseguita solo una volta per tutte le sub-simulazioni, e non per temperatura (cioè una volta per multi-simulazione). - Se vengono specificati più altezze, quindi:
Step1()
è pre-calcolate prima per tutti i sotto-simulazioni.- Vengono quindi eseguiti Step2, Passaggio3, ecc.
- È possibile avere una simulazione grande con più altezze E più temperature. Ciò significa che 2 criteri di cui sopra devono essere soddisfatti. Note
generale
- implementazione di un passo è incapsulato in
IStep
, che implementaIGeneratable
. Quindi è possibile che una simulazione restituisca un elenco di passaggi, ad esempio. - Il numero di passaggi può essere piuttosto grande.
Ho cercato di utilizzare il modello di decoratore ma senza successo.
Sto cercando uno schema corretto con una soluzione scalabile che gestisca la generazione di una singola simulazione e di più simulazioni.
Grazie.
Un'interfaccia di simulazione che astrae una o più simulazioni, suona come un [Composito] (https://sourcemaking.com/design_patterns/composite). – jaco0646