| 

.NET C# Java Javascript Exception

0
Hallo,
ich habe eine grundsätzliche Frage zum instanziieren von Klassen. Ich arbeite an einem Projekt mit mehreren Schichten. Auf den unteren Schichten sind die CRUD Operationen ausprogrammiert.

Bisher mache ich es folgendermaßen:
public class AptController : Base<IApt>
{
private DataAccessApt _DataAccessApt = new DataAccessApt();
...
public override IApt Create(ICal cal, IApt apt)
{
...
IApt retApt = _DataAccessApt.Create(value);
}
...
}


Heisst ich instanziere die "untere" Schicht gleich. Beim Debuggen sehe ich, dass natürlich bei jeder Instanzierung auch gleich die unteren Schichten instanziiert werden.

Ist es jetzt schlauer das ganze folgendermaßen zu lösen?

public class AptController : Base<IApt>
{
private DataAccessApt _DataAccessApt = null;
...
public override IApt Create(ICal cal, IApt apt)
{
...
_DataAccessApt = new DataAccessApt();
IApt retApt = _DataAccessApt.Create(value);
}
...
}


Also das man die Klasse die man benötigt erst dann instanziiert wenn man diese wirklich benötigt. Oder gibt es noch andere Richtlinien? Bin noch ziemlich am Anfang und beschäftige mich gerade mit dem Thema.

Vielleicht hat ja jemand hilfreiche Tipps. Vielen Dank
Kruemel
12.07.2010
kruemel 35 1 4
1 Antwort
2
Die zweite Variante (hier noch einmal verbessert)

public class AptController : Base<IApt>
{
private DataAccessApt _DataAccessApt = null;
...
public override IApt Create(ICal cal, IApt apt)
{
...
if( !_DataAccessApt )
_DataAccessApt = new DataAccessApt();
IApt retApt = _DataAccessApt.Create(value);
}
...
}


hat den Vorteil, dass der Startup schneller erfolgen kann, weil Objekte erst dann instanziert werden, wenn sie benötigt werden.

In Multithreaded Anwendungen muss aber die Abfrage noch geschützt werden. Das könnte in ganz seltenen Fällen aber zu Performanceproblemen führen.

Unterm Strich must du Vor- und Nachteile selbst abwegen.
14.07.2010
BeachBlocker 617 3
Finde die zweite Lösung auch besser besonders wenn "Fremde" Objecte / Classen instanziert werden. So können Exceptions behandelt werden und Init-Funktionen ausgeführt werden.
Floyd 14.07.2010
Wunderbar. Vielen Dank für die Antworten.
kruemel 14.07.2010
Und ich sollte meinem KnowHow besser vertrauen. Version 2 hätte ich auch geschrieben.
GENiALi 14.07.2010

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH