Abbiamo un progetto in cui dobbiamo elaborare determinate richieste inviate dal cliente. La richiesta è in un formato generico o in un formato cliente (tutto xml) che viene poi convertito nella versione generica.
Quindi vengono creati alcuni oggetti che sono memorizzati nel database dei clienti per essere letti in un secondo momento.
Poi arriva il momento che dobbiamo leggere queste informazioni e fare cose con esso. Il 100% di questo verrà fatto in una classe di gestori generici, ma ogni cliente avrà parti che vorrebbe avere gestite diversamente. Questo può riguardare qualsiasi campo che elaboriamo.
Io e il mio collega stavamo discutendo sul modo migliore per implementarlo senza ottenere 100+ classi che ereditassero dalla versione generica e scavalcare quei metodi che elaborano un determinato campo che il cliente vuole diverso. Ben presto la discussione si è spostata sull'uso del reflection (programmiamo in C #) e dei file di configurazione sporchi.
Ho provato a cercare su Google e su questo sito, ma non ho trovato nulla di strettamente correlato, forse non conosco i termini da cercare. Ho già provato questi link , ma non coprono il mio caso o sono in realtà about qualcos'altro .
Un po 'più di informazioni sul processo:
Le parti personalizzate comportano determinati codici che solo il cliente utilizza o determinate regole aziendali applicabili solo a un cliente. Inoltre, è possibile che alcuni casi vengano completamente ignorati per uno o due clienti in cui la classe base non lo fa.
La domanda è:
Qual è il modo migliore per gestire la logica specifica del cliente all'interno di un processo generico?
Se questo è un duplicato, mi piacerebbe davvero sapere come l'hai trovato!
Se ci sono più informazioni necessarie, sarei felice di fornire.
Aggiornamento: Ho creato questa immagine nella speranza che possa dare una migliore comprensione di ciò che voglio ottenere. Come puoi vedere nella figura, ogni cliente ha il proprio set di override del processo più grande.