Erich Gamma Ralph Johnson Richard Helm John Vlissides Addison-Wesley



Download 6,32 Mb.
Pdf ko'rish
bet177/273
Sana02.03.2022
Hajmi6,32 Mb.
#479589
1   ...   173   174   175   176   177   178   179   180   ...   273
Bog'liq
Priemioop

Паттерн Clhamoftespnsibility
case Preview:
// обработать запрос Preview
break;
default:
// дать классу Handler возможность обработать
// остальные запросы
Handler::HandleRequest(theRequest);
}
}
а
 автоматическое перенаправление запросов в языке Smalltalk.
С этой целью мож-
но использовать механизм doesNotUnderstand. Сообщения, не имеющие со-
ответствующих методов, перехватываются реализацией doesNotUnderstand,
которая может быть замещена для перенаправления сообщения объекту-пре-
емнику. Поэтому осуществлять перенаправление вручную необязательно.
Класс обрабатывает только запросы, в которых заинтересован, и ожидает, что
механизм doesNotUnderstand выполнит все остальное.
Пример кода
В следующем примере иллюстрируется, как с помощью цепочки обязаннос-
тей можно обработать запросы к описанной выше системе оперативной справки.
Запрос на получение справки - это явная операция. Мы воспользуемся уже имею-
щимися в иерархии виджетов ссылками для перемещения запросов по цепочке от
одного виджета к другому и определим в классе Handler отдельную ссылку, чтобы
можно было передать запрос включенным в цепочку объектам, не являющимся вид-
жетами.
Класс HelpHandler определяет интерфейс для обработки запросов на получе-
ние справки. В нем хранится раздел справки (по умолчанию пустой) и ссылка на
преемника в цепочке обработчиков. Основной операцией является HandleHelp,
которая замещается в подклассах. HasHelp - это вспомогательная операция, про-
веряющая, ассоциирован ли с объектом какой-нибудь раздел:
typedef int Topic;
const Topic NO_HELP_TOPIC = -1;
class HelpHandler {
public:
HelpHandler (HelpHandler* = 0, Topic = NO_HELP_TOPIC) ;
virtual bool HasHelpO;
virtual void SetHandler (HelpHandler*, Topic);
virtual void HandleHelp ( ) ;
private:
HelpHandler* _successor;
Topic _topic;
};
HelpHandler::HelpHandler (
HelpHandler* h, Topic t
) : _successor(h), _topic(t) { }



Download 6,32 Mb.

Do'stlaringiz bilan baham:
1   ...   173   174   175   176   177   178   179   180   ...   273




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