Ho una parte del sistema che assomiglia a questo:
Fondamentalmente,ilclientdecidequalechiamataAPIinvocaresulserverinbasealflagfornitoinprecedenza.Conosceinanticipoqualetipodirispostaaspettarsi.Quindiilcodicesarebbesimileaquesto:
if(flagOn){Response1=ApiCall1();Process1(Response1);}else{Response2=ApiCall2();Process2(Response2);}
Nonsonoabbastanzasoddisfattodelmodoincuifunziona,primadituttoperchéilflagchedecidequaleAPIchiamarenonappartienealclient,madovrebbeesserepartedelserver.Client
nondovrebbesaperenullasuqualiAPIsonochiamateinbackground,dovrebbesoloinoltrarelarichiestaalserverchedecidesutalicose.Quindi,hoiniziatoadisegnareunaversionemigliorataehotrovatoquesto:
In questa versione, Client
riguarda solo l'inoltro della richiesta a Server
, dove viene deciso il flusso. Tuttavia, con questo design, c'è un problema principale che deve essere risolto: tipo di risposta di ProcessRequest()
. Pertanto, poiché ProcessRequest()
può chiamare entrambe le API e ricavare da esse due risposte completamente diverse, non sono in grado di rappresentare entrambi i tipi di risposte con lo stesso tipo di dati. Non saprei quale tipo di struttura dati utilizzare sul client per rappresentare la risposta da ProcessRequest()
. Qualcuno può aiutarmi con questo problema di progettazione, o magari suggerire un design / soluzione alternativa?
??? response = server.processRequest();
-
1.