Ho un livello aziendale (BL) e un livello dati (DL). Ho un oggetto o con una collezione di oggetti figlio di Tipo C. Vorrei fornire una semantica come la seguente o.Children.Add ("informazioni"). Nel BL mi piacerebbe avere una CLASS statica che tutte le classi del livello aziendale usano per ottenere un riferimento all'istanza del datalay corrente. C'è qualche problema con questo o devo usare il modello factory per limitare la creazione alla classe A nel BL che conosce l'istanza DL.
Fammi chiarire. In passato, quando definivo DL, creo un IDL di interfaccia implementato dal DL. Gli unici oggetti che permetto di creare dalla mia BL sono le fabbriche che nei loro costruttori prendono un riferimento all'IDL
IE
IDL idlRef = new DataLayer();
IBlFactory iFac = new BLFactory(IDL);
IBLa = IBlFactory.Geta(...);
Dal momento che ho provato a far funzionare statica e singleton dal mio sistema, la mia fabbrica crea tutti gli oggetti e passa sempre il riferimento dell'IDL ai nuovi oggetti. Alcuni membri del mio team si sono lamentati del mio uso copioso di interfacce e fabbriche e vorrebbero utilizzare lezioni concrete direttamente dal BL.
Quindi il problema è che se si dispone di un oggetto che può essere creato in IE un nuovo oggetto è meglio tagliato utilizzando la fabbrica. IE
IBLA oBLA = iFac.GetBLA();
o costringere il cliente a passare sempre il riferimento al DL al nuovo oggetto. IE BLA oBLA = nuovo BLA (idlRef);
o la testabilità potrebbe essere realmente danneggiata dall'avere una proprietà statica nel BL.
Static IDL CurrentDL;
Permettere, anche se con qualche rotture di incapsulamento, uno stile più succinto Assumendo che ogni oggetto BL sappia quale sia l'attuale DL.