Többke programtervezési minta
A szoftverfejlesztésben alkalmazott Többke tervezési minta hasonlít az Egyke programtervezési mintára. Míg az Egyke programtervezési minta csak egy osztály példány létrehozását engedi, addig a Többke tervezési minta továbbfejleszti ezt a koncepciót: lehetővé teszi megnevezett példányok, mint kulcs-érték párok mappelését.

Ahelyett, hogy az alkalmazásunkban egyetlen példányt alkalmaznánk (pl. a java.lang.Runtime object a Java programozási nyelvben), a Többke minta minden kulcshoz külön példányt biztosít.

A legtöbb tankönyv és ember szerint ez egy Egyke minta. Például, a Többke tervezési minta nem jelenik meg különálló mintaként a nagy tekintélynek örvendő Design Patterns objektumorientált programozási könyvben (Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004.), hanem egy rugalmasabb megközelítéssel az Egykék regisztrálásának nevezi azt.

Leírás 
Habár úgy tűnhet, hogy a Többke nem több, mint egy egyszerű hash tábla, szinkronizált hozzáféréssel, van két fontos különbség. Az első, hogy a Többke nem teszi lehetővé a klienseknek a mappelést. A második, hogy sosem ad vissza null vagy üres referenciát; ehelyett létrehoz egy Többke példányt az első, a hozzá tartozó kulcshoz kapcsolódó kéréssel. Az ilyen kulccsal rendelkező további kérések az eredeti példányt fogják visszaadni. Ezzel szemben a hash tábla használata pusztán végrehajtási részlet és nem az egyetlen lehetséges megközelítés. A minta leegyszerűsíti a megosztott objektumok lekérését egy alkalmazásban.

Mivel az objektumkészlet csak egyszer jön létre, mint a társított osztály (és nem a példány) része, a Többke továbbra is 'lapos' marad, ahelyett hogy fa struktúrává fejlődne.

A Többke abban egyedülálló, hogy centralizált hozzáférést biztosít egy egyedülálló Többke könyvtárhoz (pl. minden kulcs ugyanabban a névtérben, önmagában), ahol minden egyes Többke példány saját állapottal létezhet a pool-ban. Ezen a módon a minta támogatja a rendszerben az alapvető objektumok indexelt tárolását (ahogy azt az LDAP rendszer is teszi). Azonban a Többke használata egy rendszer széles körű alkalmazására korlátozódik, szemben a számtalan elosztott rendszerbeli alkalmazással.

Hátrányai 
Ez a minta, ahogy az Egyke programtervezési minta is, megnehezíti a unit tesztek használatát, mivel globális állapotot vezet be az alkalmazásban. A garbage collectort alkalmazó nyelveknél ez memóriavesztést eredményezhet, mivel bevezeti a globális erős kötést az objektumhoz.

Implementációk 
Java-ban a Többke mintát felsorolásos típussal lehet megvalósítani, melynél a típus értéke megfelel a példányoknak. Amennyiben a felsorolásos listának egyetlen értéke van, Egyke mintát kapunk.

Jegyzetek

További információk
 Multiton implementation in Ruby language
  Multiton usage in PureMVC Framework for ActionScript 3
 Article with a C# Multiton implementation,  example of use,  and discussion of memory issues
  Multiton example in Java

Fordítás 

Programtervezési minták
A szoftverfejlesztésben alkalmazott Többke tervezési minta hasonlít az Egyke programtervezési mintára . Míg az Egyke programtervezési minta csak egy osztály példány létrehozását engedi , addig a Többke tervezési minta továbbfejleszti ezt a koncepciót : lehetővé teszi megnevezett példányok , mint kulcs-érték párok mappelését . Ahelyett , hogy az alkalmazásunkban egyetlen példányt alkalmaznánk ( pl. a java.lang.Runtime object a Java programozási nyelvben ) , a Többke minta minden kulcshoz külön példányt biztosít . A legtöbb tankönyv és ember szerint ez egy Egyke minta . Például , a Többke tervezési minta nem jelenik meg különálló mintaként a nagy tekintélynek örvendő Design Patterns objektumorientált programozási könyvben ( Eric Freeman , Elisabeth Robson , Kathy Sierra, Bert Bates : Head First Design Patterns , O'Reilly Media , ) , hanem egy rugalmasabb megközelítéssel az Egykék regisztrálásának nevezi azt . Leírás Habár úgy tűnhet , hogy a Többke nem több , mint egy egyszerű hash tábla , szinkronizált hozzáféréssel , van két fontos különbség . Az első , hogy a Többke nem teszi lehetővé a klienseknek a mappelést . A második , hogy sosem ad vissza null vagy üres referenciát ; ehelyett létrehoz egy Többke példányt az első , a hozzá tartozó kulcshoz kapcsolódó kéréssel . Az ilyen kulccsal rendelkező további kérések az eredeti példányt fogják visszaadni . Ezzel szemben a hash tábla használata pusztán végrehajtási részlet és nem az egyetlen lehetséges megközelítés . A minta leegyszerűsíti a megosztott objektumok lekérését egy alkalmazásban . Mivel az objektumkészlet csak egyszer jön létre , mint a társított osztály ( és nem a példány ) része , a Többke továbbra is 'lapos' marad , ahelyett hogy fa struktúrává fejlődne . A Többke abban egyedülálló , hogy centralizált hozzáférést biztosít egy egyedülálló Többke könyvtárhoz ( pl. minden kulcs ugyanabban a névtérben , önmagában ) , ahol minden egyes Többke példány saját állapottal létezhet a pool-ban . Ezen a módon a minta támogatja a rendszerben az alapvető objektumok indexelt tárolását ( ahogy azt az LDAP rendszer is teszi ) . Azonban a Többke használata egy rendszer széles körű alkalmazására korlátozódik , szemben a számtalan elosztott rendszerbeli alkalmazással . Hátrányai Ez a minta , ahogy az Egyke programtervezési minta is , megnehezíti a unit tesztek használatát , mivel globális állapotot vezet be az alkalmazásban . A garbage collectort alkalmazó nyelveknél ez memóriavesztést eredményezhet , mivel bevezeti a globális erős kötést az objektumhoz . Implementációk Java-ban a Többke mintát felsorolásos típussal lehet megvalósítani , melynél a típus értéke megfelel a példányoknak . Amennyiben a felsorolásos listának egyetlen értéke van , Egyke mintát kapunk . Jegyzetek További információk Multiton implementation in Ruby language Multiton usage in PureMVC Framework for ActionScript 3 Article with a C # Multiton implementation , example of use , and discussion of memory issues Multiton example in Java Fordítás Programtervezési minták