Come gestire la logica personalizzata per più clienti

4

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.

    
posta Mixxiphoid 19.03.2015 - 20:53
fonte

1 risposta

3

Ci sono diverse opzioni che puoi considerare per affrontare questo problema a livello di design.

Per quanto riguarda i motivi, potresti voler farti un ripasso, incluso, anche se non limitato a:

Il modello di progettazione di fabbrica astratto

link

che potrebbe forse essere usato in combinazione con:

Il modello di progettazione della strategia

link

Se è probabile che lo stato della tua implementazione entri in gioco, lo schema di progettazione dello stato, in combinazione con uno o entrambi i precedenti, può anche aiutare (presentato anche dofactory).

'Spero che questo aiuti,

    
risposta data 06.08.2015 - 00:39
fonte

Leggi altre domande sui tag