A-tit indd


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



Download 3,35 Mb.
Pdf ko'rish
bet246/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   242   243   244   245   246   247   248   249   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Паттерны уменьшения связанности
335
невозможность найти службу — критическая ошиб-
ка и игра должна быть остановлена. Другие проиг-
норируют ошибку и безопасно продолжат. Если ло-
катор не может определить стандартную политику, 
подходящую для всех случаев, то передача обработ-
ки ошибки позволит каждой вызывающей функции 
самой принимать решение о реакции.
• Пользователи должны обрабатывать ошибки

Это, несомненно, ведет к тому, что каждая вызыва-
ющая функция 
должна
самостоятельно осуществ-
лять проверку на ошибки при поиске службы. Если 
большинство из них ведут себя схожим образом, 
то в коде появится много дублирования. И даже 
если всего в одном из сотен мест, где потенциаль-
но может возникнуть ошибка, она будет обрабаты-
ваться неверно, может упасть вся игра.
• Приостановить игру
Мы не можем 
доказать
, что служба всегда будет до-
ступна во время компиляции, но это не значит, будто 
мы не может 
объявить
ее доступность как часть со-
глашения выполнения локатора. Самый простой спо-
соб — утверждение (assertion):
class Locator
{
public:
static Audio& getAudio()
{
Audio* service = NULL;
// € 6 3…
assert(service!= NULL);
return *service;
}
};
Если служба не найдена, то игра останавливает-
ся до того, как любой следующий код попытается ее 
использовать. Вызов функции 
assert()
не решает 
Функция 
assert()
объясняется в главе 
«Одиночка (Singleton)» 
(с. 97), если вы ничего 
о ней не слышали.


336
Локатор служб (Service Locator) — 
Паттерны программирования игр
проблему неудачного поиска службы, но он проясня-
ет, чья это проблема. С помощью утверждения здесь 
мы говорим: «Службу не удалось найти по вине лока-
тора».
• Пользователям не нужно обрабатывать отсут-
ствие службы
. Поскольку одна и та же служба мо-
жет использоваться во множестве мест, нам при-
дется писать значительно меньше кода. Объявляя 
доступность службы, мы возлагаем на локатор от-
ветственность за ее предоставление, тем самым 
освобождая пользователей от необходимости де-
лать выбор.
• Игра остановится, если службу не удастся найти

Если служба действительно не может быть найде-
на, то игра приостановится. И нам придется искать 
ошибку, мешающую найти службу (скорее всего 
просто какой-то код инициализации не вызывает-
ся тогда, когда должен). Но возникает проблема 
для всего кода, который блокируется, пока ошиб-
ка не устранена. В итоге у большой команды раз-
работчиков может случиться длительный перерыв 
в работе.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   242   243   244   245   246   247   248   249   ...   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