| |||||||
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) | |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
| frage zu singleton
Hi Angeregt Durch MiM`s Blog habe ich mich jetzt mal an Design Patterns gesetzt... Ok das erste was ich testen will ist Singleton.. Nun habe ich mir eine Klasse Car gemacht...die will ich jetzt testweise als SIngelton instanzieren.. aber nun mein Frage - wie geht das ? beim instanzieren muss ich doch einen return type angeben...und der ist ja dann nicht von singleton - sondern von car... ActionScript:
Zitat:
Gruss nky | |
| | |
| | #2 (permalink) |
| Flashaholic Registriert seit: Feb 2003 Ort: Berlin
Beiträge: 1.459
|
Vorsicht singleton macht immer nur dann sinn wenn es absolut nur eine Instanz geben darf. Singleton ist keine patent lösung. hier mal eine kleine demo PHP-Code: alex
__________________ TVNEXT Solutions Geändert von atothek (06-09-2004 um 17:15 Uhr) |
| | |
| | #3 (permalink) |
| 0x2b | ~0x2b; Registriert seit: Jan 2003 Ort: Rocky Beach
Beiträge: 370
|
Du könntest die Car Instanz auf Singleton casten, aber ich glaube es liegt eher an einem Verständnisproblem. Das Singleton Pattern definiert, dass es von einer Klasse nur eine Instanz geben darf. Eine übliche Implementierung ist, der Klasse, einen privaten Constructor zu geben und eine statische Methode, die die Instanz zurückliefert (eine Instanz einer Singleton-Klasse erhält man in der Regel nicht mit new) Also z.B. ActionScript:
ActionScript:
bort.
__________________ http://www.flexperten.de |
| | |
| | #4 (permalink) |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
|
Hi atothek ![]() In der App in der ich es verwenden will - darf es nur eine Instanz geben...deshalb will ich das ja ![]() aber ich versteh eines net... wie kriege ich meine klasse car jetzt zum singleton ? muss ich der car noch was dazuerben - oder wie ? das ist die klasse ActionScript:
|
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2001 Ort: Neckarsulm
Beiträge: 273
|
Du musst den Konstruktor private machen, damit man die Klasse Car von außerhalb nicht mehr instanziieren kann. Dann gibst du der Klasse Car noch eine statische Methode getInstance():Car. In der Methode getInstance() erstellst du eine neue Instanz von Klasse Car (falls diese noch nicht vorhanden ist), und legst sie in einer statischen Instanzvariable ab. Also so wie bort das schon gepostet hat. |
| | |
| | #6 (permalink) |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
|
Hm OK Dickes Danke an euch alle jetzt ist mir schon vieles klarer ! Nur eines will mir net einluechten.. wozu brauch ich dann eigentlich die Klasse Singleton ? Ich mein alles was ihr mir gezeigt hab - sind quasi Klassen - die alle wie Singletons funktionieren bzw sind.. Ich dachte aber immer man hätte eine klasse a und eine klasse singleton..und um a zu einem singleton zu machen brauche ich beide .. So wie ich das jetzt aber verstehe -brauche ich nur klasse a....und die bekomtm halt die eigenschaften die man braucht für ein singleton.. Ich denke ich habs bestimmt wieder falsch verstnaden... aber bevor ich weiter hier rum fasel...probier ich mal ein bisschen aus - futter hab ich ja jetzt genug ![]() Gruss nky |
| | |
| | #7 (permalink) |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
|
ok nach reiflicher überlegung bin ich nun zu folgendem entschluss gekommen ActionScript:
somit verfügt die klasse ja über die singleton funktionalität... ich weiss jetzt ent ob das korrekt ist - aber es entspricht mal dem Beispiel von Bort und ist auch die einleuchtendste Lösung für mich momentan ![]() Aber verbessert mich bitte fals ich die Sache falsch angehe.. Gruss nky |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Sep 2001 Ort: Neckarsulm
Beiträge: 273
| jop, so ist das korrekt.Du brauchst die Singleton Klasse nicht. Ein Design Pattern ist ja ein Modell, eine Idee und wird für gewöhnlich an das aktuelle Problem, dass mit Hilfe des Patterns gelöst werden soll, angepasst. Für gewöhnlich lassen sich keine Klassen erstellen, die das Pattern sozusagen repräsentieren, umsetzen und die dann von konkreten Klassen eines Projekts genutzt werden können, bei denen man genau dieses Pattern anwenden möchte. Hilfestellungen können natürlich trotzdem geboten werden. Zum Beispiel könnte man in seiner Applikation die Instanziierung einem Kontext überlassen. D.h. man registriert Klassen am Kontext mit einem String identifier. Wenn jetzt jemand eine Instanz der Klasse möchte nutzt er Kontext.get("identifier"). Hier könnte man jetzt sagen, dass man bei der Registrierung angeben kann, ob die Klasse ein Singleton sein soll oder nicht. Das ist auch das Thema, dass ich auf meinem Blog angeschnitten habe. Proxies könnte man mit Hilfe von AOP auch dynamisch erzeugen lassen. |
| | |
| | #9 (permalink) |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
|
Ist das schön wenn langsam die Einsicht kommt...Ich muss sagen ich hatte ein völlig falsches Bild von der ganzen Sache....Danke für die Aufklärung ! Langsam macht es mir einen Höllen Spass ![]() Nun noch ein Frage: Warum muss die InstanceVar und die getInstance Methode statisch sein ? Wenn ich das statisch rausmache - motzt der compiler ... Gruss nky |
| | |
| | #10 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
@Simon: Die Geschichte mit dem Kontext finde ich interessant. Ich finde es nämlich sehr nervig, wenn ich jeder Klasse, die ich als Singleton benutzen möchte, die gleiche getInstance Routine und instance-Eigenschaft geben muss. Wenn ich die Singleton-Eigenschaft einer Klasse durch eine Kontext verwalte, wie vermeide ich dann, dass die Klasse direkt instantiiert wird? Und am Casten kommt man wohl auch nicht vorbei, oder? Der Kontext kann ja nur Object liefern. mfg .r
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Sep 2001 Ort: Neckarsulm
Beiträge: 273
|
Auf http://www.simonwacker.com/blog/archives/000079.php wird das ganze nochmal genauer beleuchtet. Ich bin gerade auch dabei alle Vorankündigungen, Ideen, die ich dort genannt habe umzusetzen. Am Casten wirst du leider nicht vorbeikommen und Kontrolle über die Häufigkeit Instanziierung der Klasse hat man leider auch nicht. Das ganze setzt also wieder ein wenig Disziplin voraus, wobei das ja eigentlich kein größeres Problem sein sollte und weicht auch leicht von der Singleton Definition im GoF Buch ab (mehr in oben genanntem Artikel). Ein Kontext eröffnet auch noch eine Reihe anderer Möglichkeiten. Zum Beispiel könnte man auf deklarativer Basis die Beziehungen zwischen einzelnen Instanzen etc. bestimmen (Inversion of Control). Von Spring wird das in einer wirklich schönen Weise unterstützt. |
| | |
| | #12 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Hmm
Also so wie ich macromedia kenne kann man casten auch einfach weglassen ... <sarkasmus> AS2 ist ja so schön typisiert ![]() </sarkasmus>
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #15 (permalink) |
| Bontempi Punk Registriert seit: Dec 2001 Ort: Dtld/Pfalz
Beiträge: 4.185
|
wenn du eine klasse hast und willst sicherstellen das von ihr nur eine instanz vorhanden ist.....bzw nur eine instanz erstellt werden kann.. (hast dir mal die kommentare von mim durchgelesen ) ? Gruss nky |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |