Algoritmo di tracciamento singolo per molti vettori [chiuso]

1

Quando si tratta di rintracciare pacchetti da una moltitudine di vettori, è possibile avvolgere un modo globalmente accettato di tirare lo stato di virata o devo scrivere supporto per ogni vettore con cui ci occupiamo?

Ho un software che elabora i documenti EDI. Ho implementato un modo per fatturare automaticamente in base allo stato segnalato da un numero di tracciamento. Il nostro primo partner commerciale utilizza solo UPS: semplice. Fatto. Nessun problema. Il secondo però butta tutto questo fuori dalla finestra. Si tratta di merci con un gruppo selezionato di vettori e la maggior parte di essi supporta un'API MA non vorrei scrivere, implementare e aggiornare per ogni singolo che dobbiamo supportare. Per non parlare degli utenti possono aggiungere più corrieri.

Al momento mescoleremo solo tra 3 tipi di portatori, quindi non c'è COSÌ, ma chi lo sa? Potremmo avere 10 partner commerciali entro la fine dell'anno e dobbiamo sostenere il 50% dei principali vettori nella nostra regione. Questo lavoro può crescere rapidamente e sto cercando una soluzione possibile, se ne esiste una.

    
posta David Carrigan 14.09.2015 - 18:24
fonte

1 risposta

1

Ciò che hai descritto sembra un caso classico per l'utilizzo del modello di adattatore .

Ad un livello superiore, il pattern è lì per proteggere la tua applicazione dai cambiamenti che si verificano nelle interfacce esterne. Serve anche come un comodo meccanismo per introdurre nuove interfacce esterne riducendo al minimo la modifica all'applicazione principale.

Ecco un diagramma per aiutare a visualizzare come andranno le cose.


Fai clic per espandere

Il componente blu scuro PackageTracking rappresenta la funzione globale che chiameresti per tracciare un pacchetto.

Il verde Shipping Interface rappresenta un insieme comune di funzionalità che devi avere da tutti i corrieri di spedizione.

Il blu più leggero Carrier _ Wrapper rappresenta le funzioni wrapper che dovrai scrivere per interfacciarsi con ogni gestore.

Sfortunatamente, non c'è modo semplice di dover scrivere codice contro la specifica API EDI di ogni operatore. L'aspetto positivo di questo approccio è che è sufficiente toccare il wrapper di un vettore quando apportano modifiche. Non è necessario toccare il codice wrapper degli altri operatori.

    
risposta data 15.09.2015 - 17:05
fonte

Leggi altre domande sui tag