consigli di progettazione: grafico - computazione

1

Ho un modello di dominio, persistente in un database, che rappresenta un grafico. Un grafico è costituito da nodi (ad esempio NodeTypeA, NodeTypeB) connessi tramite diramazioni. I due elementi generici (nodi e rami avranno proprietà). Un grafico verrà inviato a un motore di calcolo. Per eseguire calcoli, il motore deve essere inizializzato in questo modo (pseudo codice semplificato):

Engine Engine = new Engine() ;
Object ID1 = Engine.AddNodeTypeA(TypeA.Property1, TypeA.Property2, …, TypeA.Propertyn);
Object ID2 = Engine.AddNodeTypeB(TypeB.Property1, TypeB.Property2, …, TypeB.Propertyn);
Engine.AddBranch(ID1,ID2);

Finalmente il calcolo è eseguito in questo modo:

Engine.DoSomeComputation();

Mi stavo solo chiedendo se ci sono modelli di design rilevanti là fuori, che aiutano a ottenere quanto sopra usando buoni principi di progettazione. Spero che abbia senso. Qualsiasi feedback sarebbe molto apprezzato.

    
posta cs0815 18.09.2012 - 15:38
fonte

1 risposta

1

Penso che il Pattern visitatori sia appropriato al tuo problema, in quanto ti consente di separare le attività:

  • applica un calcolo ad ogni nodo sul grafico; e
  • il calcolo che viene applicato.

Il tuo metodo DoSomeComputation() prenderebbe un parametro che è (chiusura / lambda / implementazione di qualche Visitor interfaccia [*]) e applicarlo ai nodi sul grafico.

[*] elimina come appropriato per il linguaggio di programmazione che stai utilizzando.

    
risposta data 26.09.2012 - 09:54
fonte