Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2007, 12:10   #1 (permalink)
Markus Raab
 
Benutzerbild von derRaab
 
Registriert seit: Aug 2001
Ort: Berlin Friedrichshain
Beiträge: 935
Decorator Pattern

Hallo Leute,

wenn ich für die Flash Komponente einen Decorator entwickeln will, dann muß ich das komplette Interface des Windows implementieren? Das würde bedeuten alle Methoden und Eigenschaften? Also auch die der Superklassen incl. MovieClip?

Ist es also keine gute Idee einen Decorator zu entwickeln um das Window um Funktionen zu erweitern (Resizeable etc.)?

Ich habe meine Funktionalitäten eigentlich schon fertig, wollte die nur auf die Pattern-Architektur übertragen. Aber wenn das so umfangreich ist, macht das dann überhaupt Sinn?

M
derRaab ist offline   Mit Zitat antworten
Alt 08-02-2007, 17:42   #2 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Ja, das dekorierte Window sollte auch wieder ein Window sein, muss also alle Methoden implementieren.

Allerdings, da die mx Klassen ja keine Interfaces implementieren, ist es fraglich, ob das Decoratorpattern überhaupt Sinn macht, bzw. ob man das dann noch so nennen kann.

Wie wäre es denn mit einem MixIn, wie der EventDispatcher?
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 08-02-2007, 23:06   #3 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
Ich würde auch sagen MixIn oder __resolve().
__________________
elias ist offline   Mit Zitat antworten
Alt 09-02-2007, 12:03   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Warum nicht einfach extenden?
Mit der symbolOwner-Variable kannst du dann sogar das Window-Bibliothekssymbol weiterverwenden, solange du deine Fenster mit createClassObject erstellst.
Ansonsten ziest du dir einfach aus der ComponentFLA.fla das Window-Symbol, verknüpfst es mit deiner neuen Klasse, und kompilierst es zu einem besseren Window.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 09-02-2007, 15:10   #5 (permalink)
Markus Raab
 
Benutzerbild von derRaab
 
Registriert seit: Aug 2001
Ort: Berlin Friedrichshain
Beiträge: 935
Hallo. MixIn hab ich noch nicht gehört...mich aber gerade grob eingelesen...und jetzt grad auch verstanden. So wie man den EventDispatcher einbindet nennt man das MixIn. Gut zu wissen.

Aber: Da muß man dann ja auch alle Methoden der Window-Klasse nochmal einschreiben. Kommt also nicht in Frage, weil die Window-Klasse ja unglaublich viele Methoden hat (erbt ja bis runter zum MovieClip einiges).

Krass ist, dass ich __resolve (Object.__resolve property) noch nie verwendet oder gar wahr genommen habe. Wahnsinn. Da denkt man man ist schon ein wenig dabei...

Nun könnte ich mit __resolve zwar so eine Art Decorator bauen, aber per Definition ist das dann ja gar kein richtiger Decorator weil ich ja nicht das komplette Interface implementiere sondern einfach alle Aufrufe bis zum eigentlichen Window durchschleife. Das bedeutet auch, dass ich in Eclipse jeden Window-Methoden-Aufruf im Decorator als Fehler angezeigt bekomme.

Vielleicht implementiere ich im Decorator dann nur den Teil des Interface, den ich wirklich anspreche (z. B. setSize, x, y usw) um die Fehlermeldungen in Eclipse zu unterdrücken. Was denkt Ihr?
derRaab ist offline   Mit Zitat antworten
Alt 09-02-2007, 18:35   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Was spricht denn gegen das Erben vom Window?
Egal wie du es anders machst, entweder es macht mehr Arbeit, oder es ist unsauber.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 10-02-2007, 12:22   #7 (permalink)
Markus Raab
 
Benutzerbild von derRaab
 
Registriert seit: Aug 2001
Ort: Berlin Friedrichshain
Beiträge: 935
Ich finde halt einfach die Idee hinter dem Decorator Patter cool, aber für sowas ist mir das zu viel getippe. Leider stehen ja die verschiedenen vererbten Interfaces nicht als separat definiertes Interface zur Verfügung. Sonst würd ich mir vielleicht sogar noch die Mühe machen...

Erben vom Window wäre wirklich noch eine Möglichkeit. Aber dann hat halt jedes der Fenster eine Vielzahl von erweiterten Funktionen. Mal sehen. Ich denke nochmal drüber nach. Aber den Weg über die Component.fla kommt nicht in Frage. Ich will die Klasse möglichst ohne weiteren Aufwand verwenden können.

Danke für die Infos!
derRaab ist offline   Mit Zitat antworten
Alt 10-02-2007, 16:54   #8 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Was du vielleicht machen kannst, ist einmal Vererben, und ab da dann Interfaces benutzen. Dann sind es halt keine mx Windows mehr sondern derraab Windows.

de.derraab.container.Window extends mx.container.Window implements de.derraab.container.IWindow

de.derraab.container.ResizableWindow implements de.derraab.container.IWindow, de.derraab.container.IResizable

de.derraab.container.ResizableDragableWindow implements de.derraab.container.IWindow, de.derraab.core.IResizable, de.derraab.core.IDragable

usw.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 12-02-2007, 09:44   #9 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Dann muss er dummerweise auch wieder alle Interface-Funktionen in die Klasse hacken, da ja geerbte Methoden Interfaces nicht erfüllen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 12-02-2007, 09:55   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.403
Wieso werden denn, wenn meine Klasse fs.container.Window von mx.container.Window erbt, die Funktionen von xm.container.Windows mit lehren Funktionsrümpfen überschrieben?

Wo erbt denn meine Klasse da irgendwas? Edit: das findet zeugte von schlechtem Deutsch

Geändert von Omega Psi (12-02-2007 um 10:41 Uhr)
Omega Psi ist offline   Mit Zitat antworten
Alt 12-02-2007, 10:30   #11 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Wie meinen?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 12-02-2007, 10:35   #12 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Zitat:
Zitat von Janoscharlipp Beitrag anzeigen
Dann muss er dummerweise auch wieder alle Interface-Funktionen in die Klasse hacken, da ja geerbte Methoden Interfaces nicht erfüllen.
Also ich könnte wetten dass das doch geht, hab jetzt nur keine Zeit zum Ausprobieren.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 12-02-2007, 10:45   #13 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.403
Zitat:
Zitat von Janoscharlipp Beitrag anzeigen
Wie meinen?
Ach, ich glaube, ich habe was echt fasch verstanden... Sorry... weitermachen
Omega Psi ist offline   Mit Zitat antworten
Alt 20-03-2007, 11:56   #14 (permalink)
Markus Raab
 
Benutzerbild von derRaab
 
Registriert seit: Aug 2001
Ort: Berlin Friedrichshain
Beiträge: 935
@ Janoscharlipp: Ich steh grad auf dem Schlauch. Ich wollte jetzt noch mal einen neuen Versuch machen und eben die bestehende Window-Klasse erweitern. Aber ich finde keinen Window-MovieClip in der ComponentFLA. Hab ich was falsch verstanden?

Und wie funktioniert das mit der symbolOwner Variable?
derRaab ist offline   Mit Zitat antworten
Alt 20-03-2007, 19:50   #15 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
1) C:\Programme\Macromedia\Flash 8\en\Configuration\ComponentFLA\StandardComponents .fla o.ä. öffnen
2) Window-Symbol (das allerletzte im Ordner) kopieren in neue Datei einfügen
3) In neuer Date, Window mit neuer Klasse verknüpfen
4) Symbol in Kompilierten Clip umwandeln, oder als swc exportieren

Hab ein Beispiel unter http://janosch.scharlipp.de/ff/CoolWindow.zip hochgeladen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele