A-tit indd



Download 3,35 Mb.
Pdf ko'rish
bet213/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   209   210   211   212   213   214   215   216   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Отправляя сообщения
Это самая сложная из альтернатив. Мы можем встро-
ить в объект контейнера небольшую систему сообще-
ний, что позволит компонентам передавать информа-
цию друг другу.
Вот одна из возможных реализаций. Мы начнем 
с определения базового интерфейса 
Component
, ко-
торый будет реализовывать все наши компоненты:
class Component
{
public:
virtual ~Component() {}
virtual void receive(int message) = 0;
};


Паттерны программирования игр
— Паттерны уменьшения связанности
293
Тут есть единственный метод 
receive()
, его ис-
пользуют классы, чтобы принимать входящие сооб-
щения. Здесь мы используем простое значение 
int
для идентификации сообщений, но при более полной 
реализации можно включать другие данные в сооб-
щение.
Затем мы добавим метод в объект контейнера для 
отправки сообщений:
class ContainerObject
{
public:
void send(int message)
{
for (int i = 0; i < MAX_COMPONENTS; i++)
{
if (components_[i] != NULL)
{
components_[i]->receive(message);
}
}
}
private:
static const int MAX_COMPONENTS = 10;
Component* components_[MAX_COMPONENTS];
};
Сейчас, если у компонента есть доступ к контей-
неру, он может отправлять ему сообщения, а тот уже 
будет ретранслировать их всем компонентам. (Вклю-
чая отправивший сообщение компонент, будьте осто-
рожны, не попадите в бесконечный цикл сообщений!) 
Но у такого решения есть пара последствий.
• Родственные компоненты не связаны
. Проходя че-
рез родительский объект-контейнер, так же как 
в варианте с использованием состояния, мы га-
рантируем, что компоненты не связаны друг с дру-
гом. При такой реализации единственная зависи-
мость — сами значения сообщений.
Если вы захотите дора-
ботать систему, вы мо-
жете создать такую си-
стему сообщений, 
которая будет поддер-
живать 
очередь
и отло-
женную доставку. Более 
подробно об этом в главе 
«Очередь событий 
(Event Queue)» (с. 296).



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   209   210   211   212   213   214   215   216   ...   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