A-tit indd


Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet235/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   231   232   233   234   235   236   237   238   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Паттерны уменьшения связанности
321
Локатор служб 
(Service Locator)
«Предоставьте глобальную точку доступа к службе 
без связывания пользователей с конкретным клас-
сом, который ее реализует».
Мотивация
Природа многих объектов и систем игры такова, что 
им приходится взаимодействовать практически с каж-
дым, даже самым отдаленным фрагментом кода. Сложно 
найти часть кода, не нуждающуюся в аллокаторе, жур-
налировании или генераторе случайных чисел. Подоб-
ные системы можно рассматривать как 
службы
, кото-
рые должны быть доступны всей игре.
В нашем примере мы рассмотрим аудиосистему. Она 
менее низкоуровневая, чем распределитель памяти, 
но затрагивает большинство других систем игры. Па-
дающий камень ударяется о землю с громким звуком 
(физический движок). Неигровой персонаж снайпер 
стреляет из винтовки (ИИ). Выбор пункта меню пользо-
вателем сопровождается булькающим звуком (пользо-
вательский интерфейс).
Каждое из упомянутых мест игры требует доступа 
к аудиосистеме и использует что-то из следующего:
// † 6 ?
AudioSystem::playSound(VERY_LOUD_BANG);
Глава 16


322
Локатор служб (Service Locator) — 
Паттерны программирования игр
// † 7 (Singleton)?
AudioSystem::instance()->playSound(VERY_LOUD_BANG);
Любой способ приводит нас к нужному результату, 
но мы сталкиваемся с увеличением связанности во всем 
коде. Каждая из подсистем нашей игры напрямую ссы-
лается на конкретный класс 
AudioSystem
, независимо 
от того, какой механизм мы используем, статический 
класс или Одиночку (Singleton) (с. 97).
Несомненно, вызовы должны быть с 
чем-то
связаны, 
чтобы заставить звук воспроизводиться, но позволить 
частям кода напрямую обращаться в реализацию аудио-
системы опасно: вы же не раздаете сотням незнакомцев 
свой адрес — на случай, если они вдруг захотят принес-
ти вам письмо. И вопрос стоит не только о защите лич-
ных данных. Намного больше проблем возникает, когда 
вы переезжаете: ведь вам придется сообщить каждому 
свой новый адрес.
Есть решение лучше: телефонная книга. Люди, же-
лающие с вами связаться, могут найти ваш текущий ад-
рес просто по имени. Когда вы переезжаете, вы сооб-
щаете об этом только телефонной компании. А уж она 
вносит изменения в справочник, и теперь все, кому 
нужно, узнают ваш новый адрес. По факту вам даже 
не нужно называть настоящий адрес. Достаточно оста-
вить адрес почтового отделения или кого-то, кто будет 
вас «представлять». Направляя всех незнакомцев в теле-
фонную книгу, вы получаете 
единое место, через кото-
рое удобно контролировать связь с вами
.
Это суть паттерна Локатор служб (Service Locator) —
она уменьшает связанность кода как с самой 
службой
(конкретной реализацией), так и с 
местом
(где полу-
чить ее экземпляр).

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   231   232   233   234   235   236   237   238   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish