Модел на веригата на отговорността
Също известен като
Класификация
По предназначение: поведенчески По приложимост: към обекти
Честота на употреба
Под средното - 1 2 3 4 5
Предназначение
Шаблонна верига на отговорността - позволява ви да избегнете обвързването на заявка към заявка, като същевременно дава възможност за обработка на тази заявка на няколко обекта. Моделът на веригата на отговорност свързва заявката във верига и я предава по тази верига, докато един от обектите, съставляващи тази верига, обработи предадената заявка.
В реалния живот е трудно да се намери рационален аналог на модела, който моделът на веригата на отговорност описва. За да разберете по-добре как работи моделът, може да се даде нереалистичен пример. Например, предлага се да се разгледа работата на агенция за преводи от английски на други чужди езици. Има трима преводачи и преводачите седят на масите един след друг. Когато клиентът дойде в бюрото, той работи само с един преводач, който седи на първата маса.Клиентът дава на преводача документ за превод на определен език.Преводачът (първият във веригата) определя езика на превода и ако може да преведе, той превежда документа, ако не, тогава предава документа по-нататък по веригата (седи зад него) на преводача и т.н.
Фигурата по-долу показва, че клиентът трябва да преведе документ от китайски на английски. Клиентът дава документа на китайски на преводача.Преводачът разбира, че не може да преведе и предава документа по-надолу по веригата на следващия преводач. Следващият преводач е преводачът, който може да преведе документа. Преводачът превежда документа на английски и връща документа на клиента. Преводачът не е участвал в товаслучай.
Ако никой от преводачите не може да преведе документа, документът се губи. Фигурата по-долу показва, че клиентът трябва да преведе документ от японски на английски. Клиентът дава документа на японски на преводача.Преводачът разбира, че не може да преведе и предава документа по-надолу по веригата на следващия преводач. Следващият преводач си е преводач.Преводачът осъзнава, че не може да преведе и предава документа по-надолу по веригата на следващия преводач. Следващият преводач е преводачът. Англо-българският преводач разбира, че не може да превежда и тъй като зад гърба му няма повече преводачи, просто изхвърля документа в кошчето (условно).
Положителните страни на този подход са, че клиентът не знае за преводача, който извършва превода, докато всеки от преводачите познава само един преводач (който стои зад него), което осигурява слаба връзка на цялата система. Недостатъкът на този подход е, че няма гаранции, че преводът ще бъде завършен, тъй като документът може да стигне до края на веригата и да изчезне.
Структура на модела в UML
Вижте пример за глава: \013_Верига на отговорност\001_Верига
Структура на шаблон в C#
h1.Наследник = h2; h1.HandleRequest(1); h1.HandleRequest(2); > >