A-tit indd


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



Download 3,35 Mb.
Pdf ko'rish
bet239/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   235   236   237   238   239   240   241   242   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Паттерны уменьшения связанности
327
ConsoleAudio *audio = new ConsoleAudio();
Locator::provide(audio);
Обратите внимание: код, вызывающий метод 
playSound()
, не подозревает о существовании кон-
кретного класса 
ConsoleAudio
. Он знает только о на-
личии абстрактного интерфейса 
Audio
. И класс 
лока-
тора
не связан с конкретным поставщиком службы. 
Единственное
место в коде, осведомленное о настоящем 
конкретном классе, — код инициализации, предостав-
ляющий службу.
На самом деле тут есть один уровень уменьшения за-
висимости: интерфейсу 
Audio
неважно то, что в боль-
шинстве случаев он вызывается через локатор сервиса. 
Ему известно, что он не является обычным абстрактным 
базовым классом. Благодаря такому положению вещей 
мы можем применять данный паттерн и к другим клас-
сам, изначально создававшимся с иной целью. Это от-
личие от паттерна Одиночка (Singleton) (с. 97), которое 
влияет на архитектуру самого класса «службы».
Пустая служба
Ранее наша реализация была относительно простой 
и в то же время достаточно гибкой. Но нельзя не назвать 
ее недостаток: если мы попытаемся использовать служ-
бу, поставщик которой еще не был зарегистрирован, 
нам вернется 
NULL
. И если вызывающий ее код не сде-
лает проверку, то игра может упасть.
К счастью, существует другой паттерн, Нулевой объ-
ект (Null Object), который можно использовать для реше-
ния выделенной проблемы. Основная идея заключает-
ся в возвращении специального объекта, реализующего 
тот же интерфейс, что и нужный нам объект, в случае 
если мы не можем найти или создать сам объект и по-
лучаем 
NULL
. Реализация интерфейса по факту ничего 
не делает, но она позволяет коду продолжить свою рабо-
ту, словно он получил «настоящий» объект.
Иногда это называют 
«временная связан-
ность»: две части кода 
просто должны быть вы-
званы в нужном по-
рядке, чтобы программа 
работала корректно. 
Уменьшение временной 
связанности делает код 
легче для понимания 
и управления.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   235   236   237   238   239   240   241   242   ...   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