Laden...

Sauber? - Datenobjekt kennt sein Model

Erstellt von inflames2k vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.521 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren
Sauber? - Datenobjekt kennt sein Model

Hallo,

eins zwei mal habe ich bei einfachen Anwendungen darauf gesetzt, das das Datenobjekt, auf das Ein-/Ausgaben gemacht werden selbst die Methoden zum laden, speichern & ändern in / aus der Datenbank kennt.

Quasi nach dem Prinzip:


private class MyBusinessObject
{
      private MyBusinessObjectModel _model;

      public MyBusinessObject(int iID)
      {
          MyBusinessObject this._model.GetBusinessObject(iID);
          // properties zuweisen
          //..
      }
}

Kann man das so machen, oder sollte das Datenobjekt zwar geliefert werden durch das Model jedoch aber nicht sich selbst um die Erstellung kümmern?

Ich fand es an dieser Stelle recht einfach und übersichtlich, da die Forms somit wirklich nur die zu bearbeitenden Objekte kannten. - Ich möchte mir nur nichts einprägen, was eventuell unsauber ist. Daher meine Frage.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

A
350 Beiträge seit 2010
vor 11 Jahren

Ich nutze Models nur als reine Datenhaltungsobjekte ohne Logik.
Umd as Laden der Models sollte sich imho eine andere Stelle kümmern (Repo, DA)

Grüße

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren

Schon klar, mache ich im normalfall bei größeren Sachen auch. Nur habe ich es eben schon 2 mal gemacht bei kleineren Sachen.

Mein Problem ist ja hier einfach, ob man das so machen kann oder ob das Objekt seine Daten nicht über den DAL selbst holen sollte.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo inflames2k

Machen kann man das so, hast du ja selber schon 😉.
Das ganze nennt sich ActiveRecord-Pattern, oder es ähnelt diesem zumindest.

Für kleinere Sachen nutzbar, für grössere nicht mehr.
Da delegierst du die Verantwortlichkeit lieber an eine dedizierte Klasse.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren

Danke Peter Bucher, dann lag ich mit dem Ansatz in den 2 Fällen ja so falsch garnicht. 😃

Das dies sogar in einem Design Pattern verwendet wird, hätte ich nicht gedacht. Aber man lernt nie aus.

Dann werde ich den Ansatz so also für kleine Sachen wahrscheinlich beibehalten. Bei großen Sachen setze ich natürlich weiter darauf, das die Businessschicht für die Befüllung der Objekte mit den vom DAL zurück gelieferten Daten übernimmt.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

F
10.010 Beiträge seit 2004
vor 11 Jahren

Doch du lagst falsch.
Bei ActiveRecord benutzt das Objekt den DAL/ORMapper zum laden/Speichern, nicht das Model.
Das ist der komplett falsche Weg.

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren

Naja eventuell ist auch nur die Bezeichnung "Model" in Bezug auf die Schicht aus der sich das Objekt seine Daten holt schlecht gewählt. Das wäre eigentlich nur eine Klasse im DAL.

Das nur, damit wir jetzt nicht anneinander vorbei reden. 😃

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo inflames2k,

Wikipedia sagt:

Präsentationsschicht (client tier) – Diese, auch Front-End bezeichnet, ist für die Repräsentation der Daten, Benutzereingaben und die Benutzerschnittstelle verantwortlich.

Logikschicht (application-server tier, Businessschicht, Middle Tier oder Enterprise Tier) – Sie beinhaltet alle Verarbeitungsmechanismen. Hier ist die Anwendungslogik vereint.

Datenhaltungsschicht (data-server tier, back end) – Sie enthält die Datenbank und ist verantwortlich für das Speichern und Laden von Daten.

Das Wort "Modell", so wie ich es kenne und wie es hier im Forum verwendet wird, bezieht sich dabei ausschließlich auf die mittlere Schicht.

herbivore

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 11 Jahren

Hallo herbivore,

ich sagte ja das ich die Bezeichnung für das Beispiel eher schlecht gewählt habe, seis auch, weil ichs mir so falsch angewöhnt habe.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |