MB: Bild und Text kombiniert verschachteln

Beitrag lesen

moin,

wie PL schon schreibt - grundsätzlich gibt's bei OO die Vererbung und Referenzen auf andere Objekte. Vererbung scheint mir hier nicht zur Lösung beizutragen.

Ok warum? wen keine Vererbung, wie denn dann wenn nicht so? kannst du mir n konkretes Anwendungs-Beispiel geben?

Um einem Objekt eine Referenz auf ein anderes Objekt zu verschaffen, gibt's verschiedene Wege. Der schlechteste ist, wenn sich ein Objekt die Referenz selbst holt, denn damit erzeugt man eine fest verdrahtete Beziehung zwischen den Objekten. Das ist nicht im Sinne der Informatik. Entkoppelung ist das Ziel, das schafft Testbarkeit und Austauschbarkeit.

Entkoppelung? Hier schwer zu realisieren finde ich :/. Auch hier ein kleines Beispiel?

Dass ein Model eine Referenz auf ein Repository hält, ist allerdings merkwürdig. Eher sollte das Repository eine get oder suche Funktion haben, [...]

hat es.

[...] die das ArticleModel liefert.

ein TArticle-Objekt ja

Analog muss das ListingRepository ein TListing Objekt liefern.

tut es.

Und der Controller steckt dann beides zusammen.

Ich hab das im Model gemacht.

Man kann Abhängigkeiten über den Konstruktur injizieren, oder durch Zuweisungen an öffentliche Properties.

Kannst du mir wieder n kleines Anwendungsbeispiel geben, damit ich weis wo du gedanklich bist?

Wenn Du in mehreren Controllern ArticleModel Objekte aufbauen musst, kann auch eine Klasse ArticleModelBuilder eine Lösung sein. Sie kennt die Repositories und weiß wie man den Objektbaum des ArticleModel zusammensetzt.

Ja ich hab ein paar: ProjectControler, ImpressumControler, AboutController, PagesController. ProjectControler Index gib ne short view der Artikel, aber noch kein wirklichen Artikel in voller länge. Wie hilft da n Builder der GoF?

Wenn aber ArticleModel und TListing immer zusammen gehören, wenn ein TListing ohne ein ArticleModel gar nichts bedeutet, dann gehört das Ermitteln von TListing mit ins ArticleRepository.

tun sie nicht.

Die beiden bilden dann nämlich eine Business Domain, und ein Repository sollte sich mit einer BusinessDomain befassen, nicht mit einer Table.

ok was ist eine BuisnessDomain. Wahrscheinlich kenne ich das oder auch weniger. Kannst du mir wieder ein kurzes Anwendungbeispiel geben?

Sorry wenn ich dich mit der Forderung von Anwendungsbeispielen zu kleister 😉.

lgmb