hotti: Frameworks..

Beitrag lesen

Hi, jetzt wirds interessant ;)

Abgesehen davon, dass ich bei hotti nie so richtig weiß, ob er Fachbegriffe richtig verwendet oder sie nach Gutdünken verwendet, vor allem wenn er sie nur als Stichwortbrocken in die Runde wirft,
Vermutlich kannst Du mit dem Stichwort 'Delegation' nichts anfangen.

Vermutlich stelle ich mir darunter etwas anderes vor. Vor allem stelle ich mir andere Anwendungsfälle vor. Ich sehe keinen Grund, warum beim Hinzufügen eines Objekts zu einer Liste irgendetwas delegiert werden muss.

Muss nicht, aber kann. Beispiel Artikelpräsentation (Responseklasse): Sowohl für die Präsentation (V View) als auch für das Hinzufügen (C Control) eines Artikels zum Warenkorb wird die Schnittstelle zu den Artikel-Objekten benötigt. Nennen wir die "Schnittstelle zu den Artikel-Objekten" class "AI" (Article Interface).

In der "Artikelpräsentation" (Responseclass "Manager::Article", Response-Objekt RO) gibt es die beiden Methoden browse() und control(). In beiden Methoden wird eine Instanz (Objekt) der Klasse AI benötigt.

Jetzt gibt es zwei Möglichkeiten:
1 jeweils in browse() und in control() wird ein AI-Objekt erstellt.
2 das AI-Objekt wird nur einmal erstellt.

Im Fall 2 kann das z.B. im Konstruktor gemacht werden, der über browse() und control() steht: Das AI-Objekt wird zum Attribut des RO gemacht. Einfache Delegation:

  
// methods in response class  
function browse{  
  $article = $this->AI->fetch_object($artnr);  
}  
// $this->AI also available in function/method control()  

Das Delegieren kann erweitert werden, dadurch dass die AI-Methode fetch_object() selbst als RO-Methode deklariert wird. Method fetch_object() kann dann direkt über das RO aufgerufen werden. Auch hier gibt es wieder zwei Möglichkeiten:
1 das AI-Objekt wird innerhalb der Responseklasse im Konstruktor zum Attribut des RO gemacht (wie oben beschrieben)
2 das AI-Objekt wird innerhalb der Methode fetch_object() erstellt

Im Fall 2 würde ich die Methode jedoch anders nennen, z.B. fetch_article(), also wenn diese Methode zur Responseklasse gehört, ansonsten führt das zu Missverständnissen.

Das Warenkorb-Interface wird nur in control() benötigt. Hier reicht eine einfache Objekterstellung.

Das AI ist bei mir über einen ORM-Layer realisiert ;)

Hotti