| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Feb 2006 Ort: undefined
Beiträge: 70
| Composite Denkfehler?
Ich versuche gerade für ein kleines Framework einen Teil mit dem Composite Pattern umzusetzen. Ansatz ist der, dass es Composites und Components ( Leafs ) gibt. Composites erben von Component und stellen zusätzlich die Container-Funktionalität des Hinzufügens und Entfrernens von Components bereit. Ich stoße dabei an folgendes Problem. Bildlich gesprochen habe ich z.b. eine Leaf-Klasse, die von Component erbt. Ich habe eine Branch-Klasse, die von Leaf erbt, da die gleiche FUnktionalität wie Leaf selbst bereitgestellt werden muss. Heisst, der Aufruf der Methode cut() ( aus der Leaf-Deklaration ) auf einem Branch ist möglich über den Proxy callComponentMethod( "cut" ). Sie führt dabei cut() auf allen Child Composites und Leafs aus. Nun erbt aber Branch von Leaf und hat somit die Container-Funktionalität von Composite nicht. Wie kann ich Branch ein Composite und gleichzeitig ein Leaf sein lassen ? Gibts da elegante Wege über mittels Dekorierens oder Composition over Inheritance? AbstractComposite -> AbstractComponent Leaf -> AbstractComponent __ ??? Branch -> Leaf Branch -> AbstractComposite __??? Geändert von _sevenDust (11-08-2008 um 14:02 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2006 Ort: undefined
Beiträge: 70
|
Technisch wäre das der beste, zumindest der einfachste, Weg. Warum sind nicht alles DisplayObjects DisplayObjectContainers ? Die Api sollte die Unterscheidung zwischen Containerelementen und terminierenden Leaf-Elementen aufzwingen, muss es aber im Endeffekt nicht Ich werde wohl nicht drumherum kommen, alle vom Typ Composite sein zu lassen.
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |