@gregor: singelton toll, aber kein plan -> need help
-
Jo
also gregors vorschlag vom singleton is genau das was ich will. nur steht nirgends wie man "singelton" benutzt. ich hab hier 2 bücher und google und such mich seit ner weile kaputt find aber nix. kann mir mal jemand das system von singleton erklären ? achja, wenn ich das recht verstanden habe ist singleton doch in etwa das gleiche als wenn ich alle klassenelemente static mache oder ?
ich hoffe es findest sich jemand der mir das system vielleicht mal erklären kann.danke im vorraus.
pain
-
Naja Singelton ist ein Design Pattern. Von der Singleton Klasse darf nur ein einziges Objekt erzeugt werden!
Hat eine globale Zugriffmöglichkeit auf das Objekt und instanziiert es beim Zugriff!public class Singleton { private static Singleton instance = null; public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } private Singelton() { } }
-
okok, alles zurück, ich glaub ich habs. ich dachte das singleton eine eigene klasse ist (class Singleton).gut.
nun hab ich folgendes prob. was ist nun wenn verschieden klassen eine instanz von der "singleton" klasse brauchen ? soweit ich den code verstehe gibts nur einmal eine instanz, oder überseh ich da was ?
Bsp:
KLasse1
Klasse2Klasse1 // is jetz mal singleton
Klasse2
{
Klasse1 klasse1Inst;
klasse1Inst = new Klasse1(); // das dürfte ja nicht gehen
}also, wo bzw. wie bekomm ich jetz die instanz oder singleton
klasse1Inst = .... ????
klasse1Inst.getInstance();
// das dürfte ja nicht gehen, falls doch dann habe ich bereits ne art singleton implementiert ohne es zu wissen :-). das heist anstatt singleton kann man auch einfach die instanzen von klasse zu klasse übergeben mit entsprechenden methoden, oder ? so mach ichs momentan. dachte nur das das nich sauber sei. hoffe es findet sich noch jemand zum beantworten. danke erstmal.pain
-
normalerweise erzeuge ich instanzen wie folgt:
main mainINst = new main();
main mainINst = Main.getInstance();
-
pain_md: bist du sicher, dass du das andere schon alles verstehst? du solltest den zugriff mit der punktnotation schon kennen...
und aus so einer kleinen klasse ist doch wohl ersichtlich, wie die benutzt wird
-
lag ich also fast richtig und habe ohne es zu wissen ne art singleton gecoded.
janz toll, gut zu wissen :-). dankepain
-
türlich kenn ich den punktopperator. ich hab das ganze nur von nem völlig falschen punkt aus betrachtet. ich dachte singleton is ne eigene klasse und das ich die irgendwie mit meiner eigentlichen klasse mischen muss. an dem punkt bin ich halt verzweifelt.
im prinzip macht ja singleton nix weiter als ne art static konstruktor für die klasse zu erzeugen. den aufwand versteh ich aber nich ganz. man kann genausogut instanzen erzeugen und die dann über öffentliche methoden verteilen. so hab ichs ja bisher gemacht. und gehn tut das super. ich dachte nur das ich damit gegen gewisse grundsätze der sauberen programmierung verstoße und hab nach ner alternative gesucht. danke an alle. ich habs jetz.
ganz ehrlichpain