Кіріспе

Объектіге бағытталған бағдарламалық жасақтаманы әзірлеудегі жобалау үлгісі. Бағдарламалық жасақтамадағы синглтон үлгісі – кластың тек бір ғана инстанциясын құруға шектеу қоятын бағдарламалық жобалау үлгісі. Объектіге бағытталған бағдарламалық жасақтамадағы қайталанатын мәселелерді шешу жолдарын сипаттайтын белгілі "Төрттік" жобалау үлгілерінің бірі. Бұл үлгі жүйедегі әрекеттерді үйлестіру үшін дәл бір объектінің қажеттілігі туғанда пайдалы. Нақтырақ айтқанда, синглтон үлгісі объектілерге: тек бір ғана инстанцияға ие екенін қамтамасыз етуге, сол инстанцияға оңай қол жеткізуге және олардың құрылуын бақылауға (мысалы, кластың конструкторларын жасыру) мүмкіндік береді. Бұл термин синглтон математикалық түсінігінен алынған.

Жалпы қолданылу

Синглеттер көбінесе жаһандық айнымалылардан артықшылыққа ие, себебі олар жаһандық кеңістікті (немесе оларды қамтитын кеңістікті) бұзбайды. Бұдан өзге, олар қажет болғанда ғана жадты бөліп, бастау беруге мүмкіндік береді, ал көптеген тілдердегі жаһандық айнымалылар әрқашан ресурстарды пайдаланады. Синглтон үлгісі абстрактілі фабрика, фабрика әдісі, құрылысшы және прототип үлгілері сияқты басқа дизайн үлгілерінің негізі ретінде де қолданылуы мүмкін. Фасад объектілері де көбінесе синглтон болып табылады, өйткені тек бір фасад объектісі ғана қажет. Логтау – синглтонды қолданудың кең таралған мысалы, себебі хабарламаларды логтағысы келетін барлық объектілерге бірыңғай қолжетімділік қажет, және олар тұжырымдамалық тұрғыдан бір ортаға жазады.

Сын

Кейбіреулер синглтонды қолданбаға, көбінесе қажетсіз, жаһандық күй енгізетін анти-үлгі деп санайды. Бұл басқа объектілердің синглтонға тәуелді болу мүмкіндігін тудырады, ал бұл тәуелділіктің бар-жоғын анықтау үшін оның іске асылу егжей-тегжейлерін талдау қажет. Мұндай күшейтілген байланыс бірліктерді сынауды қиындатуы мүмкін. Өз кезегінде, бұл синглтонды пайдаланатын кез келген абстракцияны шектейді, мысалы, бірнеше дананы бір уақытта пайдалануға мүмкіндік бермейді. Синглтон сондай-ақ жалғыз жауапкершілік принципін бұзады, өйткені ол өзінің бірегейлігін сақтаумен қатар, әдеттегі функцияларын орындауға да жауапты.