Egyke programtervezési minta
From Wikipedia, the free encyclopedia
Az egyke programtervezési minta olyan programtervezési minta, amely egyetlen objektumra korlátozza egy osztály létrehozható példányainak számát.
Gyakori, hogy egy osztályt úgy kell megírni, hogy csak egy példány legyen belőle. Ehhez jól kell ismerni az objektumorientált programozás alapelveit. Az osztályból példányt a konstruktorával lehet készíteni. Ha van publikus konstruktor az osztályban, akkor akárhány példány készíthető belőle, tehát publikus konstruktora nem lehet az egykének. De ha nincs konstruktor, akkor nem hozható létre a példány, amin keresztül hívhatnánk a metódusait. A megoldást az osztályszintű (statikus) metódusok jelentik. Ezeket akkor is lehet hívni, ha nincs példány. Az egykének tehát van egy osztályszintű metódusa (szerezPéldány, angolul getInstance), ami minden hívójának ugyanazt a példányt adja vissza. Természetesen ezt a példányt is létre kell hozni, ehhez privát konstruktort kell készíteni, amit a szerezPéldány az egyke osztály tagjaként meghívhat.[1]
Sokan erősen kritizálják az egyke mintát, és antimintának tekintik, mivel szükségtelen korlátozásokat és globális állapotokat helyez el az alkalmazásban, illetve csökkenti a tesztelhetőséget.[2][3][4]