A-tit indd


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



Download 3,35 Mb.
Pdf ko'rish
bet182/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   178   179   180   181   182   183   184   185   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
Обратите внимание: и 
init()
, и 
particles_
ста-
тичны. И при условии, что метод 
Superpower::init()
вызывается достаточно рано, каждая сила может ис-
пользовать систему частиц. В то же время экземпляры 
Superpower
могут быть свободно созданы вызовом 
конструктора нужного производного класса.
Даже больше, сейчас 
particles_
— статичная пе-
ременная, нам не нужно хранить ее значение для каж-
дого из экземпляров класса 
Superpower
, то есть мы 
еще и экономим память.
• Использовать Локатор служб (Service Locator)
Код из предыдущего примера требовал, чтобы внеш-
ний код обязательно передавал состояние в базовый 
класс до того, как оно ему понадобится. Это налагает 
на окружающий код бремя инициализации. Есть дру-
гой способ — заставить базовый класс самому полу-
чить нужное ему состояние. Например, использовать 
паттерн Локатор служб (Service Locator) (с. 321):
class Superpower
{
protected:
void spawnParticles(ParticleType type, int count)
{
ParticleSystem& particles =
Locator::getParticles();
particles.spawn(type, count);
}
// @ $ $…
};
Здесь методу 
spawnParticles()
требуется си-
стема частиц. Вместо того чтобы передавать ее ему 
из внешнего кода, он получает ее с помощью локато-
ра служб.
Но помните о многочис-
ленных недостатках 
паттерна Одиночка 
(Singleton). Состояние 
будут разделять многие 
и многие объекты (все 
экземпляры класса 
Superpower
). Система 
частиц инкапсулиро-
вана, так что она не на-
ходится в области гло-
бальной 
видимости

Но анализировать код 
по-прежнему очень 
сложно, ведь к одному 
объекту могут обра-
щаться все части кода.


Смотрите также
• Когда вы применяете паттерн Метод Update (с. 181), 
ваш метод Update является частным случаем мето-
да песочницы.
• Данный паттерн является полной противополож-
ностью Метода Шаблона (Template Method). В обо-
их случаях паттерны реализуются через набор 
примитивных операций. В случае Подкласса песоч-
ницы (Subclass Sandbox) методы определены в про-
изводном классе, а примитивные операции опреде-
лены в базовом классе. В паттерне Метод Шаблона 
(Template Method), в 
базовом
классе реализованы 
методы, а примитивные операции — в 
производ-
ном
классе.
• Данный паттерн можно рассматривать как вариа-
цию паттерна Фасад (Facade)*. Этот паттерн прячет 
набор разных систем за единым упрощенным API. 
В паттерне Подкласс песочница (Subclass Sandbox) 
базовый класс выступает в роли фасада, который 
прячет весь игровой движок от своих подклассов.
* Оба паттерна — Метод Шаблона и Фасад — были описаны 
в книге «Банды четырех». — 
Прим. науч. ред.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   178   179   180   181   182   183   184   185   ...   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