Это 15-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Сначала уточните смысл
- Шаблон цепочки ответственности: для запроса создается цепочка объектов-получателей. Этот режим дает тип запроса, разделяет отправителя и получателя запроса и относится к поведенческому режиму.
- В этом шаблоне обычно каждый получатель содержит ссылку на другой получатель. Если объект не может обработать запрос, он передаст тот же запрос следующему получателю и так далее.
Сценарии, которые мы используем в работе
- Например, мы пробуем практичную систему утверждения компании открытого доступа, например, в счетах за возмещение расходов или в системах утверждения.
- Часто у нас есть абсолютное право на одобрение BOOS, затем второе одобрение на финансы и первое одобрение на руководителей отделов.
- Затем мы интуитивно думаем о бизнес-логике как о
if (leader.author != null) {
if (financialer.author != null) {
if (boss.author != null){
handle(...)
}
}
}
-
Возьмите следующий пример, чтобы глубже понять шаблон цепочки ответственности.
-
Пример: учитель может просматривать информацию о семье учеников, наблюдатель может просматривать только информацию о родном городе учеников, а секретарь группы может только просматривать отношения учащихся в группе.
-
Права принудительного исполнения каждого уровня могут быть связаны вниз
-
Создать абстрактный класс
abstractAuther, с подробными уровнями индивидуальных обязанностей
- Создать класс учителей
- Создать класс монитора
- Создать ветку группы
- Создавайте роли на разных уровнях и назначайте им разные уровни ответственности
- конечный результат
可以查看学生的家庭信息------家庭信息详细
可以查看学生的家庭信息------籍贯信息详细
可以查看学生的籍贯信息------籍贯信息详细
可以查看学生的家庭信息------团建信息详细
可以查看学生的籍贯信息------团建信息详细
可以查看学生的团籍关系------团建信息详细
- Обязанности каждой роли могут передаваться постепенно или между уровнями.
характеристика
- Основное решение:Обработчик в цепочке ответственности отвечает за обработку запроса. Пользователю нужно только отправить запрос в цепочку ответственности, и ему не нужно заботиться о деталях обработки запроса и доставке запроса, поэтому цепочка ответственности разделяет отправителя запроса и обработчика запроса.
- преимущество:
- Уменьшить сцепление. Он разделяет отправителя и получателя запросов.
- Объекты упрощены. Делает объект не нуждающимся в знании структуры цепочки.
- недостаток:
- Нет никакой гарантии, что запрос будет принят.
- Производительность системы будет в определенной степени затронута, и отладка кода неудобна, что может привести к циклическим вызовам.