Come rappresentare una logica aziendale molto specifica in classi contenenti la logica aziendale?

4

BusinessModel : ho una gelateria e ho progettato corsi per fare i miei dati finanziari basati sui fornitori in base ai tipi di settore (linee di business). Vendo gelati di molti tipi, che compro da diversi fornitori, e alla fine del mese cerco di riconciliare il mio conto per linea di business utilizzando le classi che ho creato per il calcolo dei costi. Il metodo ProcessFile contiene l'algoritmo specifico per il calcolo LOB.

Sto cercando di pensare a un modo corretto per affrontare questo problema. Tuttavia, sto incontrando un problema con le classi di denominazione e non sono esattamente sicuro di quale prospettiva del modello di progettazione utilizzare. Mi piacerebbe una soluzione che sia un motore: riceve input, processa e produce output.

Ecco la mia interfaccia per iniziare.

 public interface IFileProcessing
    {
    string InputFilePath { get; set;} 
    string OutputFilePath { get; set;}
    string ProcessedFilePath { get; set; }
    string ExtractionFieldsFromWebService{ get; set; }
    void ProcessFile(string FileName, string FilePath);
    }

Tutto questo sta accadendo sulla base di 5 diversi modelli (linea di business), alias le classi che ho definito. Diciamo per esempio, Le mie classi gestiscono il mio calcolo dei miei costi

public class IceCreamLOB : IFileProcessing
public class FrozenCustardLOB : IFileProcessing
public class GelatoLOB: IFileProcessing
public class FrozenCustard: IFileProcessing

Finora tutto è generico per la linea di business menzionata sopra. La complessità arriva quando mi viene chiesto di progettare classi specifiche per i fornitori, come ad esempio BreyersLOB o KlondikeLOB, che è il mio account più grande e questi account richiedono specifiche di elaborazione speciali.

Non so se dovrei nominare le mie classi specifiche per fornire fornitori.

Le mie domande sono tutte correlate a questo:

  • Come posso mantenere l'elaborazione logica specifica per un fornitore in una classe senza nominare la classe un fornitore specifico? C'è un buon modello quando ti imbatti in una situazione come questa?
  • Come faccio a ridimensionarlo senza usare l'ereditarietà o devo usarlo?
  • Quali situazioni dovrebbero indicare le tue classi specifiche per il fornitore / partner commerciale con cui lavori? Come nel mio esempio, KlondikeLOB e BreyersLOB
posta JeffJeffery 30.09.2015 - 18:36
fonte

1 risposta

0

Potrebbe fare un po 'più di informazioni su quale processo sta facendo il file. Ma penso che il tuo problema potrebbe essere nel confondere il metodo di elaborazione con la linea di business o il tipo di prodotto.

presumibilmente abbiamo alcuni metodi di elaborazione di file generici, che convertono le righe da qualsiasi formato di file in acquisti o vendite di prodotti, quindi alcune elaborazioni elaborano i dati finanziari su tali acquisti / vendite.

Vorrei dividere questi due, nell'elaborazione dei file, che avrebbe l'input del formato file X, diciamo csv specifico del fornitore e i record di acquisto / vendita di output in un formato / database generico.

ad es.

CSVFileProcessor : IFileProcessor
DATFileProcessor : IFileProcessor
KlondikeCustomFileProcessor :IFileProcessor

Quindi l'elaborazione del libro mastro, che avrebbe quei record come rapporti di input e output, fatture, pagamenti qualunque.

ad es.

IceCreamProfits : ILedgerReport
KlondikeSales : IInvoiceCreator

Registrerai il fornitore e il lob nel record della contabilità generale, in modo che il tuo processo secondario possa guardare solo ai fornitori X o Y o al punto A o B se necessario

    
risposta data 01.10.2015 - 17:22
fonte

Leggi altre domande sui tag