Кіріспе

Бағдарламалық жасақтаманы жобалау үлгісі

Бағдарламалық жасақтама саласында, мультитон үлгісі – бұл синглтон үлгісін жалпылайтын жобалау үлгісі. Синглтон бір сыныптың тек бір ғана инстанциясын жасауға рұқсат берсе, мультитон үлгісі бірнеше инстанцияның бақырулы түрде жасалуына мүмкіндік береді және оларды карта арқылы басқарады. Бір қолданбаға бір инстанциядан (мысалы, Java бағдарламалау тіліндегі объект) гөрі, мультитон үлгісі әрбір кілт үшін бір инстанцияны қамтамасыз етеді. Көптонды үлгі жоғары бағаланған объектіге бағытталған бағдарламалау оқулығындағы "Үлгілер" кітабында жеке үлгі ретінде нақты көрсетілмеген. Дегенмен, кітапта синглтонды кіші сыныптарға бөлуге арналған синглтон тізілімін пайдалану туралы айтылған, бұл мәні бойынша мультитон үлгісі болып табылады.

Сипаттама

Көптонды синхронды қолжетімділігі бар хэш-кесте сияқты көрінсе де, екі маңызды айырмашылық бар. Біріншіден, мультитон клиенттерге байланыстарды (mapping) қосуға рұқсат бермейді. Екіншіден, мультитон ешқашан null немесе бос сілтеме қайтармайды; керісінше, ол алғашқы сұрау кезінде сәйкес кілтпен мультитон экземплярын жасап, сақтайды. Сол кілтпен келесі сұраулар бастапқы экземплярды қайтарады. Хэш-кесте – тек іске асылудың бір жолы ғана, жалғыз мүмкін тәсіл емес. Бұл үлгі қолданбадағы ортақ нысандарды алуды жеңілдетеді. Объекттер жиыны (pool) бір рет ғана құрылатындықтан және сыныпқа (экземпляр емес) байланысты мүше болғандықтан, мультитон ағаш тәрізді құрылымға айналудың орнына өзінің жазық мінез-құлқын сақтайды. Мультитонның ерекшелігі – ол мультитонның жалғыз каталогына орталықтандырылған қолжетімділікті қамтамасыз етеді (яғни, барлық кілттер бір атау кеңістігінде болады), ал жиындағы әр мультитон экземпляры өз күйін сақтай алады. Осылайша, бұл үлгі жүйе үшін маңызды объектілерді индекстелген түрде сақтауды ұсынады (мысалы, LDAP жүйесі сияқты). Дегенмен, мультитонды көптеген таратылған жүйелерде пайдалануға қарағанда, бір жүйеде кеңінен қолданумен шектеледі.

Кемшіліктері

Бұл үлгі, Синглтон үлгісі сияқты, бірліктерді сынауды әлдеқайда қиындатады, себебі ол қосымшаға жаһандық күй енгізеді. Автоматикалық жадты басқару тілдерінде, ол объектілерге жаһандық күшті сілтемелерді қосып, жад ағуына себеп болуы мүмкін.