Aiuto necessario per la progettazione e la struttura della classe

4

Questa domanda riguarda principalmente il modo migliore per affrontare questo problema. Qualsiasi input è apprezzato.

Il problema

Nella mia applicazione ho bisogno di inviare alcuni dati a un certo numero di destinazioni diverse (li chiameremo ricevitori da ora in poi) usando diversi protocolli (http post, ftp, soap services). Ciascuno dei diversi ricevitori risponde in modo diverso e deve essere eseguita qualche elaborazione su ciascuna risposta per capire cosa è successo. Questa elaborazione della risposta può diventare piuttosto complessa.

Anche la mia applicazione deve compiere diverse azioni basate sul ricevitore.

La mia soluzione

Il mio piano è quello di creare una classe separata per ciascun ricevitore che implementa un'interfaccia e utilizzare il modello di progettazione di fabbrica per decidere quale classe caricare in base al ricevitore. Ogni ricevitore ha un nome univoco (che viene memorizzato nel database per altri motivi) che ho intenzione di utilizzare per decidere quale destinatario caricare. Passerò questo al costruttore di fabbrica.

Attualmente ho intenzione di avere la mia interfaccia per implementare questi metodi

  • prepareData ()
  • sendData ()
  • handleResult ()

Mi piacerebbe anche un wrapper per queste funzioni come process () che restituirebbe semplicemente un booleano basato sulla mandata inviata. Non sono sicuro di dove vorrei inserire questo.

Grazie

    
posta veganista 07.03.2012 - 14:47
fonte

2 risposte

5

Se stai pensando che la tua interfaccia debba fare tre cose diverse (preparare, inviare e gestire), pensa ancora di più sulla coesione.

Cioè, hai bisogno di qualcosa che sappia come preparare i dati in modo diverso per i diversi ricevitori. Questo è un compito in sé e per sé - quindi separalo dalle altre attività in una serie di elementi che implementano un'interfaccia DataFactory (un modello di metodo Factory).

Ancora una volta, il metodo per inviare i dati varia, incapsularlo in classi DataTransport (modello di strategia?) Lungo le stesse linee, le classi ResultHandler gestiscono ogni tipo di risultato.

In questo modo ogni classe fa esattamente una cosa, e può essere testata e adattata di per sé, senza influenzare nient'altro.

Pensaci in ogni modo.

    
risposta data 07.03.2012 - 17:05
fonte
1

Puoi anche controllare il Pattern Method Template, questo ti aiuterà a incapsulare il processo / algoritmo.

    
risposta data 09.03.2012 - 14:31
fonte

Leggi altre domande sui tag