<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Multiton</id>
	<title>Multiton - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Multiton"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiton&amp;action=history"/>
	<updated>2026-05-23T10:18:26Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiton&amp;diff=2752476&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiton&amp;diff=2752476&amp;oldid=prev"/>
		<updated>2025-07-27T23:17:55Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Multiton.svg|mini|UML-Diagramm eines Multitons]]&lt;br /&gt;
Das &amp;#039;&amp;#039;&amp;#039;Multiton&amp;#039;&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;multiton&amp;#039;&amp;#039;}}) ist in der [[Informatik]] ein [[Erzeugungsmuster]], das zur Erzeugung einer bestimmten Anzahl von Objekten verwendet wird. Die [[Gang of Four (Design Patterns)|Gang of Four]] nennt es &amp;#039;&amp;#039;&amp;#039;Fliegengewicht&amp;#039;&amp;#039;&amp;#039; (englisch &amp;#039;&amp;#039;flyweight&amp;#039;&amp;#039;). Es ist wie eine Erweiterung des [[Singleton (Entwurfsmuster)|Singleton]], wo nur ein einziges Objekt verwendet wird. Um auf das richtige Objekt zuzugreifen, wird ein eindeutiger [[Schlüssel (Informatik)|Schlüssel]] verwendet. Die Objekte und deren Schlüssel werden meist als [[assoziatives Datenfeld]] in Form von Schlüssel und Werten umgesetzt, die über eine statische Methode auf Wunsch geliefert werden. So gibt es immer für jeden Schlüssel höchstens ein Objekt. Wird ein Schlüssel angegeben, für das das Objekt nicht existiert, wird das benötigte Objekt erzeugt und zur Verfügung gestellt. Dadurch ist ein Multiton eigentlich nichts anderes als eine Gruppe von Einzelstücken.&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
 |autor        = Richard Carr&lt;br /&gt;
 |hrsg         = BlackWasp&lt;br /&gt;
 |url          = http://www.blackwasp.co.uk/&lt;br /&gt;
 |sprache      = en&lt;br /&gt;
 |titel        = Multiton Design Pattern&lt;br /&gt;
 |titelerg     = The Multiton design pattern is an extension of the singleton pattern. It ensures that a limited number of instances of a class can exist by specifying a key for each instance and allowing only a single object to be created for each of those keys.&lt;br /&gt;
 |datum        = 2012-03-03&lt;br /&gt;
 |archiv-url   = https://web.archive.org/web/20120919075854/http://blackwasp.co.uk/&lt;br /&gt;
 |archiv-datum = 2012-09-19&lt;br /&gt;
 |zugriff      = 2012-09-21&lt;br /&gt;
 |zitat        = The multiton design pattern is very similar to the singleton. When a request is made for an object, a key is passed to a static method that will generate or return one. If the key has not been used before, a new object is instantiated, linked to the key and returned. If the key has been used before, the object previously linked to that key is returned. Essentially, the multiton provides the functionality of a group of singletons.&lt;br /&gt;
 |offline      = &lt;br /&gt;
 |archiv-bot   = 2022-12-17 19:24:49 InternetArchiveBot&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&amp;lt;!-- Wikipedia is keine Beispielliste. Bitte füge hier keine anderen Beispiele deiner Lieblingsprogrammiersprache hinzu. Hier soll nur das Entwurfsmuster Memento und nicht kleine Unterschiede zwischen verschiedenen Programmiersprachen erklärt werden. Bitte fügen Sie andere Beispiele ruhig unter folgender Adresse hinzu: http://de.wikibooks.org/wiki/Muster:_Multiton --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine thread-sichere Implementierung eines Multitons in [[Java (Programmiersprache)|Java]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class FooMultiton {&lt;br /&gt;
    private static final Map&amp;lt;Object, FooMultiton&amp;gt; instances = new HashMap&amp;lt;Object, FooMultiton&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    private FooMultiton() /* also acceptable: protected, {default} */ {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static FooMultiton getInstance(Object key) {&lt;br /&gt;
        synchronized (instances) {&lt;br /&gt;
&lt;br /&gt;
            // Zu key gehörige Instanz aus Map holen&lt;br /&gt;
            FooMultiton instance = instances.get(key);&lt;br /&gt;
&lt;br /&gt;
            if (instance == null) {&lt;br /&gt;
                // Lazy Creation, falls keine Instanz gefunden&lt;br /&gt;
                instance = new FooMultiton();&lt;br /&gt;
&lt;br /&gt;
                instances.put(key, instance);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return instance;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Weitere Felder und Methoden ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Unterschied zu einer [[Hashtabelle]] liefert ein Multiton immer ein Objekt zurück; &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; wird also nie zurückgegeben. Klienten können auch keine neuen Schlüssel festlegen. Es lässt zentralisierten Zugriff auf ein einziges Verzeichnis zu. Es läuft aber im Unterschied zu anderen Lösungen der indizierten Speicherung (wie z.&amp;amp;nbsp;B. [[LDAP]]) auf einem einzigen System.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
[[Unittest]]s eines Multitons sind wie bei dem [[Singleton (Entwurfsmuster)|Singleton]] schwierig, weil [[globale Variable]]n verwendet werden.&amp;lt;ref&amp;gt;[https://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html googletesting.blogspot.com]&amp;lt;/ref&amp;gt; Es kann auch zu [[Speicherleck]]s führen, wenn die Sprache [[Garbage Collection]] verwendet, da hierbei global [[starke Referenz]]en zu den Objekten gehalten werden.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wikibooks|Muster: Multiton|Multiton-Implementierungen in anderen Programmiersprachen}}&lt;br /&gt;
* [http://raa.ruby-lang.org/project/multiton/ Multiton implementation in Ruby language]&lt;br /&gt;
* [http://trac.puremvc.org/PureMVC_AS3_MultiCore/browser/tags/1.0.4/src/org/puremvc/as3/multicore/patterns/facade/Facade.as Multiton usage in PureMVC Framework for ActionScript 3]&lt;br /&gt;
* [https://gen5.info/q/2008/07/25/the-multiton-design-pattern/ C# Multiton implementation, example of use, and discussion of memory issues]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Entwurfsmuster}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwurfsmuster]]&lt;br /&gt;
[[Kategorie:Erzeugungsmuster]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>