![]() |
|
|
|||||||
| Java Basics - Anfänger Themen Fragen zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Byte
Registriert seit: 19.03.2009
Beiträge: 8
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Ich hab hier das Grundgerüst eines einfachen Singletons.
Code:
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton()
{
}
public static Singleton getInstance()
{
return instance;
}
}
Die Eigenschaft instance ist ja ein Objekt der Klasse Singleton. Imho müsste dieses Objekt wieder eine Eigenschaft instance besitzen usw. Offensichtlich ist das nicht der Fall, sonst hätte man ja eine Endlosschleife. Wie kann das sein? |
|
|
|
| #3 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Beiträge: 8.079
Abgegebene Danke: 3
Erhielt 67 Danke für 65 Beiträge
|
>> Denkfehler Singleton
Sehr wahr, Singleton ist ein Anti-Pattern. >> Imho müsste dieses Objekt wieder eine Eigenschaft instance besitzen usw. Offensichtlich ist das nicht der Fall, Nicht das Objekt, sondern die Klasse, weil instance static ist. |
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Juchu! Ein Singleton-Thread!
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 16.09.2006
Beiträge: 3.759
Abgegebene Danke: 0
Erhielt 35 Danke für 35 Beiträge
|
kurze zwischenfrage... wenn singleton so "böse" sind, warum sind dann standardmäßig alle "hippen" spring beans singletons..... ?
__________________
Meine Beiträge stehen unter der Beerware Lizenz! |
|
|
|
| #8 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Welche hippen Spring-Beans sollen das denn sein?
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
|
|
|
| #10 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Das ist allerdings was völlig anderes, als das Singleton-Muster wie in Beitrag #1 angegeben. Das hat damit absolut nichts zu tun.
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
|
|
|
| #11 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.729
Abgegebene Danke: 2
Erhielt 93 Danke für 90 Beiträge
|
Naja der Effekt ist ansich der Selbe. Es wird genau eine Instanz erstellt. Nur die Art und Weise wie diese Erstellung statt findet ist anders.
|
|
|
|
| #12 (permalink) | |||||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Beiträge: 8.079
Abgegebene Danke: 3
Erhielt 67 Danke für 65 Beiträge
|
![]() Es git einen Unterschied zwischen einem "semantischem" Singleton (liefert immer dieselbe Instanz) wie Standard Spring Beans und einem syntaktischen Singleton (angeblich nur eine Instanz möglich, kein Interface möglich da statische Methoden, dadurch nicht austauschbar in tests), eben dem klassischen Singleton Krampf -> hardcodierte globale Variable . Die statische Schnittstelle der syntaktischen Singletons sind das eigentliche Problem, dieses haben die semantischen Singletons eben nicht ![]() LMFAO Geändert von maki (19.03.2009 um 10:57 Uhr) |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #13 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 17.06.2005
Beiträge: 5.801
Blog-Einträge: 1
Abgegebene Danke: 7
Erhielt 21 Danke für 19 Beiträge
|
Das "böse" an Singletons ist ja nicht die Tatsache, dass die Objekte nur einmal existieren dürfen, sondern der statische Zugriff auf die eine Instanz.
Spring Beans existieren per Default nur einmal, aber der statische Zugriff existiert ja nicht. |
|
|
|
| #14 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Nein. Muster "Singleton" bedeutet: es ist garantiert, dass es nur ein Objekt des Typs gibt. Bei scope="singleton" ist das eben nicht der Fall. Du kannst 100 Beans definieren, alle vom selben Typ und alle mit Singleton-Scope.
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
|
|
|
| #15 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.729
Abgegebene Danke: 2
Erhielt 93 Danke für 90 Beiträge
|
Ok mit verschiedenen Ids
![]() Das könnte jetzt genauso eine Grundsatzdiskussion sein, wie ob ein static constructor einmal oder einmal pro classloader ausgeführt wird
|
|
|
|
| #16 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Also den Zusammenhang versteh ich jetzt überhaupt nicht....
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
|
|
|
| #17 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.729
Abgegebene Danke: 2
Erhielt 93 Danke für 90 Beiträge
|
Wenn du nicht 2 verschiedene Beans mit 2 Qualifiern machst wird IMMER das eine Bean zurückgegeben, was genau dem Effekt des Singleton entspricht.
Gestern hatten wir die Diskussion ob ein "static constructor" nur einmal pro Programm ausgeführt wird. Für Anfänger ja. Für Fortgeschrittene nein, weil einmal pro Classloader. Wenn du also Spring benutzt und jedes Interface nur einmal an ein Bean bindest bleibt der Effekt Singleton-Pattern. |
|
|
|
| #18 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 17.06.2005
Beiträge: 5.801
Blog-Einträge: 1
Abgegebene Danke: 7
Erhielt 21 Danke für 19 Beiträge
|
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #20 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Megabyte
Registriert seit: 19.03.2007
Beiträge: 2.268
Blog-Einträge: 14
Abgegebene Danke: 5
Erhielt 14 Danke für 13 Beiträge
|
Okay, ich glaub ich verstehe. Dann kann man aber auch sagen Integer eins = new Integer(1); sei ein Singleton. (Ich mag Grundsatzdiskussionen )
__________________
Snippets: TableLayout - Nichtrechteckige Fenster - SwingWorker - ReadWriteLock - Database ConnectionPool - Synchronisation mit Locks - EventBus - BlockingQueue - RMI - Scripting mit JRuby - Embedded Derby How-Tos: Remoting mit Spring - Dependency Injection mit Spring FAQs: Exceptions |
||||||||||||||||||
|
|
|
||||||||||||||||||
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Singleton Frage: | Allgemeine Java-Themen | 17 | 19.08.2008 15:16 | |
| Java Garbage Collector Frage (Singleton Pattern) | Mastereye | Allgemeine Java-Themen | 13 | 04.03.2008 14:05 |
| singleton Synchronisations Problem? | HyperHyper | Java Basics - Anfänger Themen | 2 | 12.10.2006 12:16 |
| Jetspeed@Tomcat Installationsprobleme | KSG9|sebastian | Server einrichten und konfigurieren | 5 | 23.12.2004 14:10 |