Domanda

Ho un livello aziendale (BL) e un livello di dati (DL). Ho un oggetto o con una raccolta di oggetti per bambini di tipo C. Vorrei fornire una semantica come i seguenti O.Children.add ("Info"). Nel BL vorrei avere una classe statica che tutte le classi di livello aziendale utilizzano per ottenere un riferimento all'istanza dell'attuale datalayer. C'è qualche problema con quello o devo usare il modello di fabbrica per limitare la creazione a una classe nel BL che conosce l'istanza DL.


Vorrei chiarire. In passato quando definire DL creo un IDL di interfaccia che il DL implementa. Gli unici oggetti che permetto di essere creati dal mio BL sono le fabbriche che nei loro costruttori fanno riferimento all'IDL

CIOÈ

   IDL idlRef = new DataLayer();  
   IBlFactory iFac = new BLFactory(IDL);
   IBLa = IBlFactory.Geta(...);

Dato che ho cercato di lavorare statica e singoli dal mio sistema, la mia fabbrica crea tutti gli oggetti e passa sempre il riferimento all'IDL ai nuovi oggetti. Alcuni nel mio team si sono lamentati del mio copioso uso di interfacce e fabbriche e vorrebbero utilizzare le classi di cemento direttamente dal BL.

Quindi il problema è se si dispone di un oggetto che può essere creato, cioè un nuovo oggetto, stai meglio utilizzando la fabbrica. CIOÈ

IBLA oBLA = iFac.GetBLA();

o costringere il client a passare sempre il riferimento al DL al nuovo oggetto. Ie bla obla = new bla (idlref);

o la testabilità sarebbe davvero danneggiata dall'avere una proprietà statica nel BL.

Static IDL CurrentDL;

Permettendo sebbene con un po 'di rottura dell'incapsulamento più succinto supponendo che ogni oggetto BL saprà qual è il CurrentDL.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top