A-tit indd


Наблюдатель (Observer) —  Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet48/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   44   45   46   47   48   49   50   51   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

66
Наблюдатель (Observer) — 
Паттерны программирования игр
Но теперь, когда вы видели реализацию паттерна 
на практике, вы знаете: у нас другой случай. Отправка 
уведомления заключается в простом проходе по спис-
ку и вызове нескольких виртуальных методов. Конечно, 
процесс в общем оказывается 
немного
медленнее, чем 
статически отправленный вызов, но получившаяся стои-
мость незначительна почти всегда, кроме кода, который 
особенно требователен к производительности.
По моему мнению, этот паттерн отлично работает за 
пределами горячего кода, то есть там, где вы можете по-
зволить себе динамическую отправку. Других наклад-
ных расходов практически нет. Мы не создаем отдель-
ные объекты для сообщений. Нет очередей. Есть просто 
косвенное обращение в синхронном вызове метода.
Слишком 
быстр
?
Фактически вы должны быть осторожны, ведь паттерн 
Наблюдатель (Observer) является синхронным. Субъект 
напрямую обращается к наблюдателям, то есть он не про-
должит выполнение действия до тех пор, пока не получит 
возврат функций от всех наблюдателей. Медленный на-
блюдатель может заблокировать работу субъекта.
Звучит страшно, но на практике отнюдь не приводит 
к концу света. Просто вам стоит не забывать о таком 
нюансе. Создатели пользовательского интерфейса (UI), 
на протяжении многих лет занимавшиеся написанием 
программ на основе событий, обычно говорят: «ника-
ких потоков в UI».
Если вы синхронно реагируете на событие, вам нуж-
но как можно быстрее завершить выполнение и вернуть 
управление, чтобы не заблокировать пользовательский 
интерфейс. Когда вам требуется выполнить медленную ра-
боту, выделите ее в отдельный поток или рабочую очередь.
Тем не менее следует соблюдать осторожность, ис-
пользуя наблюдателей с потоками и явными блокиров-
ками. Если наблюдатель пытается запросить блокиров-
ку, принадлежащую субъекту, это может затормозить 
игру. В многопоточном движке вам, скорее всего, будет 
Вот почему я считаю 
важным документирова-
ние паттернов. Когда мы 
путаемся в терминоло-
гии, мы теряем способ-
ность общаться четко 
и лаконично. Вы гово-
рите: «Наблюдатель», 
а кто-то слышит «Собы-
тия» или «Сообщения», 
ведь никто не потру-
дился описать разницу, 
ну или просто никто так 
и не прочитал докумен-
тацию.
Именно на четком 
определении терминов 
я пытаюсь сделать ак-
цент в своей книге. 
Чтобы охватить все ос-
новы, я включил главу 
о событиях и сообще-
ниях «Очередь собы-
тий» (с. 296).



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   44   45   46   47   48   49   50   51   ...   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