Többke programtervezési minta

From Wikipedia, the free encyclopedia

Többke programtervezési minta
Remove ads

A szoftverfejlesztésben a többke programtervezési minta (multiton pattern) egy olyan tervezési minta, amely általánosítja a egyke programtervezési mintát. Míg a egyke tervezési minta csak egy osztály egyetlen példányának létrehozását engedélyezi, a többke tervezési minta több példány ellenőrzött létrehozását teszi lehetővé, amelyeket kulcs-érték párok segítségével kezel. 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.

Thumb
A többke UML ábrája

A legtöbb tankönyv és ember szerint ez valójában 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[1], hanem egy rugalmasabb megközelítéssel az egykék regisztrálásának nevezik azt.

Remove ads

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 kliensek 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.

Remove ads

Hátrányai

Ez a minta, ahogy az egyke programtervezési minta is, megnehezíti a unit tesztek használatát,[2] 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

Fordítás

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads