module A giving more information to module B which it doesn't need to do it's job
Word "need" potrebbe confondere a meno che non si specifichi chiaramente needs . È vero che il modulo B non ha bisogno di queste informazioni per ottenere il risultato dell'elaborazione, ma è anche vero che senza queste informazioni, i suoi risultati sono inutili per il modulo C. In questo senso, le informazioni aggiuntive soddisfano un diverso tipo di necessità - un integrazione bisogno.
POSA 2 presenta un modello destinato a servire necessità simili - Token di completamento asincrono :
This design pattern allows an application to demultiplex and process efficiently the responses of asynchronous operations it invokes on services. (quoted from POSA 2 patterns abstracts page)
Il libro presenta un esempio di vita reale per aiutare a capire il modello: monitoraggio dello spazio pubblicitario FedEx
...An intriguing real-life example of the Asynchronous Completion Token pattern is implemented by the inventory tracking mechanism used by the US Federal Express postal services. A FedEx Airbill contains a section labeled: 'Your Internal Billing Reference Information (Optional: First 24 characters will appear on invoice).' The sender of a package uses this field as an ACT. This ACT is returned by FedEx (the service) to you (the initiator) with the invoice that notifies the sender that the transaction has completed. FedEx deliberately defines this field very loosely: it is a maximum of 24 characters, which are otherwise 'untyped.' Therefore, senders can use the field in a variety of ways. For example, a sender can populate this field with the index of a record for an internal database or with a name of a file containing a 'to-do list' to be performed after the acknowledgment of the FedEx package delivery has been received.
Vedi, sopra l'esempio è abbastanza vicino a ciò che descrivi. I ragazzi "nel mezzo della catena FedEx" possono dire che non hanno davvero bisogno di riferimenti di fatturazione, tutto quello che devono sapere è l'indirizzo di consegna. Ma il mittente può usarlo quando devono essere avvisati del completamento della transazione. È un'esigenza di tipo integrazione .
Per completezza di nota, c'è un approccio che evita la necessità di passare le informazioni di "identificazione" al modulo B. Il modulo B potrebbe restituire i suoi risultati al modulo A dalla chiamata di blocco sincrono. Al ritorno, il modulo A potrebbe "arricchire" i risultati ottenuti con qualsiasi informazione aggiuntiva e trasferirla ulteriormente al modulo C.
In questo modo non è necessariamente migliore del tuo - ad esempio, carica il modulo A con un ulteriore carico di conoscenza sul modulo C, che non è il caso del tuo approccio. Ecco perché la risposta sopra non si immerge in quale approccio scegliere e quando e invece, semplicemente, si presuppone che il controllo passante da A a B a C sia stato preferito per qualsiasi motivo.