Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Multiton
Multiton
aus Wikipedia, der freien Enzyklopädie
UML-Diagramm eines Multitons

Das Multiton (englisch multiton) ist in der Informatik ein Erzeugungsmuster, das zur Erzeugung einer bestimmten Anzahl von Objekten verwendet wird. Die Gang of Four nennt es Fliegengewicht (englisch flyweight). Es ist wie eine Erweiterung des Singleton, wo nur ein einziges Objekt verwendet wird. Um auf das richtige Objekt zuzugreifen, wird ein eindeutiger 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.[1]

Beispiel

[Bearbeiten | Quelltext bearbeiten]

Eine thread-sichere Implementierung eines Multitons in Java:

public class FooMultiton {
    private static final Map<Object, FooMultiton> instances = new HashMap<Object, FooMultiton>();

    private FooMultiton() /* also acceptable: protected, {default} */ {
        // ...
    }

    public static FooMultiton getInstance(Object key) {
        synchronized (instances) {

            // Zu key gehörige Instanz aus Map holen
            FooMultiton instance = instances.get(key);

            if (instance == null) {
                // Lazy Creation, falls keine Instanz gefunden
                instance = new FooMultiton();

                instances.put(key, instance);
            }

            return instance;
        }
    }

    // Weitere Felder und Methoden ...
}

Im Unterschied zu einer Hashtabelle liefert ein Multiton immer ein Objekt zurück; null 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. B. LDAP) auf einem einzigen System.

Nachteile

[Bearbeiten | Quelltext bearbeiten]

Unittests eines Multitons sind wie bei dem Singleton schwierig, weil globale Variablen verwendet werden.[2] Es kann auch zu Speicherlecks führen, wenn die Sprache Garbage Collection verwendet, da hierbei global starke Referenzen zu den Objekten gehalten werden.

Weblinks

[Bearbeiten | Quelltext bearbeiten]
Wikibooks: Multiton-Implementierungen in anderen Programmiersprachen – Lern- und Lehrmaterialien
  • Multiton implementation in Ruby language
  • Multiton usage in PureMVC Framework for ActionScript 3
  • C# Multiton implementation, example of use, and discussion of memory issues

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Richard Carr: Multiton Design Pattern. 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. BlackWasp, 3. März 2012, archiviert vom Original am 19. September 2012; abgerufen am 21. September 2012 (englisch): „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.“  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.blackwasp.co.uk 
  2. ↑ googletesting.blogspot.com
Entwurfsmuster
V – D
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
Integrationsarten

File Transfer | Shared Database | Remote Procedure Invocation | Messaging

Nachrichtenaufbau

Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator

Endpunkte

Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator

Kanäle

Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus

Nachrichtenvermittlung

Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker

Nachrichtenumwandlung

Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model

Systemmanagement

Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger

andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Siehe auch:  Analysemuster | Architekturmuster | Integrationsmuster | SOA-Muster
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Multiton&oldid=258348900“
Kategorien:
  • Entwurfsmuster
  • Erzeugungsmuster
Versteckte Kategorie:
  • Wikipedia:Defekte Weblinks/Ungeprüfte Archivlinks 2022-12

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id