/** * @author Boris Baran * @author Mustafa Rasit Bayram * @author Georg Robin Minorics * @version 1 * * Implementiert ein sog. Singelton, d.h. eine Klasse, dir der nur eine * Instanz gebildet werden kann. */class MySingleton{ /** * Veraible fuer den Eingabeparameter */ static String which; /** * Die Ausgabe-Variable, ueber die Instanz der Klasse ausgegeben wird. */ private static MySingleton _instance = null; /** * Speichert den Parameter in der Instanzvariable und konvertiert * ihn in in Kleinschreibung */ private MySingleton(String which) { which = which.toLowerCase(); this.which = which; } /** * Ueberprueft, ob es schon eine Instanz von der Klasse gibt... */ public static synchronized MySingleton getInstance(String which) { /** * ... wenn nciht, dann... */ if (_instance == null) /** * erzeugt es eine neue Instanz der Klasse. */ {_instance = new MySingleton(which);} /** * Wenn doch, dann gibt es die alte Instanz zurueck. */ return _instance; } /** * Liefert Auflistungen vefschiedener metasyntaktischer Variablen * zurueck - nur zu Testzwecken. */ public String getMetaSyn () { if (which == "standard") {return "foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud";} if (which == "python") {return "spam, ham, eggs";} if (which == "uk") {return "wibble, wobble, wubble, flob ";} return ">:-( >:-( >:-( >:-( >:-( >:-( >:-( >:-( >:-( >:-("; } }public class MySingletonTest{ public static void main (String [] args) { /** * Die Klasse wird initialisiert */ MySingleton IAmSingletonWhatsWithYou = MySingleton.getInstance("uk"); MySingleton IAmMarriedtonGetOffMyBack = MySingleton.getInstance("python"); /** * Die Test-String werden in den jewieligen Variablen * gespiechert. */ String metaSyn = IAmSingletonWhatsWithYou.getMetaSyn(); String metaSyn2 = IAmMarriedtonGetOffMyBack.getMetaSyn(); /** * Die Ausgabe. */ System.out.println(metaSyn); System.out.println(metaSyn2); /** * Da nur eine Instanzgebildet werden kann, ist die "2te" * Instanz der Klasse nur eine Kopie der ersten, deshalb sind * die Test-Strings gleich. */ System.out.println("Sind beide Zeilen gleich?"); if (metaSyn == metaSyn2) {System.out.println("Ja :-)");} else {System.out.println("Nein ;-(");} }}