Singleton vs static

Status
Nicht offen für weitere Antworten.

p-flash

Aktives Mitglied
Hi,

Sinn des Singletonmusters ist es ja nur ein Objekt der Klasse zu erstellen. Warum benutzt man nicht direkt nur Klassenattribute und methoden?

Bin dankbar für jede Info.

p-flash
 
B

bygones

Gast
1. bitte mach ein paar weniger --- in deiner sig :) verzieht a weng den Bildschirm

2. der Grund ist eine gewisse Flexibilität zu behalten. Ein singleton ist ja im Grunde eine ganz normale Klasse. KOmmt es später zu der Entscheidung doch kein Singleton zu behalten, ändert man nur den Zugriff auf das Objekt, die Klassenorganisation kann beibehalten werden (somit sind weniger Änderungen in der Klasse selbst, als auch in den abhängigen Klassen zu tun)

edit: zu beachten ist bei einer rein statischen Klasse, dass diese dann aber final ist, sonst können Unterklassen generiert werden die das ganze ad absurdum führen
 

AlArenal

Top Contributor
deathbyaclown hat gesagt.:
2. der Grund ist eine gewisse Flexibilität zu behalten. Ein singleton ist ja im Grunde eine ganz normale Klasse. KOmmt es später zu der Entscheidung doch kein Singleton zu behalten, ändert man nur den Zugriff auf das Objekt, die Klassenorganisation kann beibehalten werden (somit sind weniger Änderungen in der Klasse selbst, als auch in den abhängigen Klassen zu tun)

Natürlich nur, wenn ich nicht für jeden Aufruf einer Methode des Singleton ein SingletonKlasse.getInstance().irgendeineMethode() mache, sondern nach Möglichkeit zentral in einer verwendeten Klasse einmal ne Referenz auf die Instanz hole und die durchweg verwende.
 
B

bygones

Gast
AlArenal hat gesagt.:
Natürlich nur, wenn ich nicht für jeden Aufruf einer Methode des Singleton ein SingletonKlasse.getInstance().irgendeineMethode() mache, sondern nach Möglichkeit zentral in einer verwendeten Klasse einmal ne Referenz auf die Instanz hole und die durchweg verwende.
jup.

warum ich es auch verwende ist die Eindeutigkeit des Sinns der Klasse. Es ist somit sofort ersichtlich, dass es sich hierbe um ein Singleton handelt. Bei einer rein statischen Klasse ist dies nicht sofort ersichtlich.
 

Mag1c

Top Contributor
Hi,

außerdem hat man beim Singleton die Möglichkeit, als Instanz z.B. eine abgeleitete Klasse zu instanziieren, ohne daß man man von außen etwas davon mitbekommt.

Gruß
Mag1c
 

AlArenal

Top Contributor
Mag1c hat gesagt.:
außerdem hat man beim Singleton die Möglichkeit, als Instanz z.B. eine abgeleitete Klasse zu instanziieren, ohne daß man man von außen etwas davon mitbekommt.

Stimmt.. hab ich noch gar nicht drüber nachgedacht.. könnte sich aber mal als nützlich erweisen.. :)
 

Zebani

Mitglied
Hallo,

ich habe eine Frage. Da die Frage hier passt, wollte ich keine neue Topic eröffnen.

Soweit ich weiss, braucht man auch die Methode clone zu überschreiben, damit die erstellte Singleton-Klasse einen Sinn ergibt.
Kann man die erstellten Singleton-Klassen auch in diesem Fall mit RMI benutzen?
Man hat nur ein statisches Objekt. Wie wird denn dieses Objekt exportiert?
 
B

bygones

Gast
Zebani hat gesagt.:
Soweit ich weiss, braucht man auch die Methode clone zu überschreiben, damit die erstellte Singleton-Klasse einen Sinn ergibt.
das wär mir neu ? warum will ich ein Objekt klonen, von dem ich nur eine Instanz haben will ?
 

helium

Mitglied
Ein Singleton kann einen C'tor haben, der das Objekt initialisiert, beim Monostate Pattern ist das nicht der Fall. Ein Singleton kann von einer anderen Klasse abgeleitet sein (könnte sich z.B. auch auch beim Null-Object-Pattern als nützlich erweisen), Monostate kann das nicht, ... .
Aber zu sagen, das Singleton besser ist oder das Monostate besser ist ist totaler Quatsch. Es sind zwei Pattern, die beide ihre Berechtigung haben.
 

Bleiglanz

Gesperrter Benutzer
helium hat gesagt.:
... Pattern, die beide ihre Berechtigung haben.
und viel zu oft angewendet werden


Das Singleton ist (für viele) das "Erste" und einfachste Pattern, man kann es auch als Anfänger ohne Schwierigkeiten vollständig verstehen.

Gerade weil es so einfach ist, denken dann manche man müsse das einsetzen

ist aber leider völlig falsch gedacht :)
 
B

bygones

Gast
Bleiglanz hat gesagt.:
Das Singleton ist (für viele) das "Erste" und einfachste Pattern, man kann es auch als Anfänger ohne Schwierigkeiten vollständig verstehen.

Gerade weil es so einfach ist, denken dann manche man müsse das einsetzen

ist aber leider völlig falsch gedacht :)
juche - es leben die globalen Variablen :wink:
 

helium

Mitglied
deathbyaclown hat gesagt.:
Bleiglanz hat gesagt.:
Das Singleton ist (für viele) das "Erste" und einfachste Pattern, man kann es auch als Anfänger ohne Schwierigkeiten vollständig verstehen.

Gerade weil es so einfach ist, denken dann manche man müsse das einsetzen

ist aber leider völlig falsch gedacht :)
juche - es leben die globalen Variablen :wink:

Genau das ist das Problem. Singletons sind Objekte, die höchstesn einmal zur selben Zeit existieren dürfen. Das hat doch nichts mit 'ner globalen Variable zu tun. Den Typ, den die globale Variable hat kann man möglicherweise beliebig oft instanzieren. Das ist einfach 'ne Variable, die von überall aus zugänglich ist. Eine globale Variable könnte sogar auf ein Singleton verweisen.
 

Zebani

Mitglied
deathbyaclown hat gesagt.:
Zebani hat gesagt.:
Soweit ich weiss, braucht man auch die Methode clone zu überschreiben, damit die erstellte Singleton-Klasse einen Sinn ergibt.
das wär mir neu ? warum will ich ein Objekt klonen, von dem ich nur eine Instanz haben will ?

Warum sollte man eine Singleton-Klasse haben, obwohl das einzige Objekt dieser Klasse geklont werden kann?
 
R

Roar

Gast
Zebani hat gesagt.:
deathbyaclown hat gesagt.:
Zebani hat gesagt.:
Soweit ich weiss, braucht man auch die Methode clone zu überschreiben, damit die erstellte Singleton-Klasse einen Sinn ergibt.
das wär mir neu ? warum will ich ein Objekt klonen, von dem ich nur eine Instanz haben will ?

Warum sollte man eine Singleton-Klasse haben, obwohl das einzige Objekt dieser Klasse geklont werden kann?
wenn das objekt geklont werden kann macht ein singleton keinen sinn :?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S singleton vs. static Allgemeine Java-Themen 7
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
J Singleton Allgemeine Java-Themen 5
Z deserialize singleton Allgemeine Java-Themen 9
A Singleton threadsafe Allgemeine Java-Themen 8
S Singleton Instanz löschen Allgemeine Java-Themen 5
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
T ActionListener und Singleton Allgemeine Java-Themen 15
S Singleton Entwurfsmuster Allgemeine Java-Themen 20
T So eine Art Singleton-Factory? Allgemeine Java-Themen 3
S Singleton-Klasse und ThreadLocal-Klasse von abstrakter Klasse ableiten? Allgemeine Java-Themen 2
S Singleton hier sinnvol? Allgemeine Java-Themen 20
T Zugriff auf Singleton verkürzen - Namespaces?? Allgemeine Java-Themen 20
B Volatile Frage: Reicht es nur den Singleton als volatile zu deklarieren? Allgemeine Java-Themen 4
Iron Monkey Singleton mit Parameter Allgemeine Java-Themen 14
G Singleton Frage: Allgemeine Java-Themen 17
M Singleton und Vererbung? Allgemeine Java-Themen 45
R Wo initilisiere ich eine Liste in einem Singleton? Allgemeine Java-Themen 2
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
B Generisches Singleton implementieren Allgemeine Java-Themen 12
H Singleton und MultiThreading [erledigt] Allgemeine Java-Themen 3
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
P SingleTon Allgemeine Java-Themen 5
M zwei Threads - ein singleton-Objekt Allgemeine Java-Themen 3
RaoulDuke Agent als Singleton Thread Allgemeine Java-Themen 7
K Singleton vererben Allgemeine Java-Themen 15
E Singleton vererben Allgemeine Java-Themen 10
E Frage zu Singleton Allgemeine Java-Themen 22
D Design Pattern: Singleton Allgemeine Java-Themen 4
K Sequenzdiagramm für Singleton-Muster Allgemeine Java-Themen 5
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S static methoden Allgemeine Java-Themen 9
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
G static- Methoden überschreiben Allgemeine Java-Themen 10
E Geschwindigkeit static Allgemeine Java-Themen 6
V Static oder wie? Allgemeine Java-Themen 61
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
G Java-Befehle Native und Static Allgemeine Java-Themen 2
conan2 static-Block in Klassen Allgemeine Java-Themen 6
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben