Я довольно новичок в шаблонах проектирования, и я хочу понять, есть ли шаблон проектирования «дерева ответственности», как вариант «цепи ответственности»?
Да. В дополнение к простой реализации обработчика https://www.dofactory.com/net/chain-of-responsibility-design-pattern
/// <summary> /// The 'Handler' abstract class /// </summary> abstract class Handler { protected Handler successor; public void SetSuccessor(Handler successor) { this.successor = successor; } public abstract void HandleRequest(int request); }
Вы бы сделали что-то вроде этого https://www.codeproject.com/Articles/20108/Extending-Chain-of-Responsibility-Design-Pattern:
public class IfHandler : Handler<string> { private Case1Handler case1Handler; private Case2Handler case2Handler; public IfHandler(Case1Handler case1, Case2Handler case2) { case1Handler = case1; case2Handler = case2; } public override bool MustExecuteHandleActions(string request) { return false; } public override void PassRequestToNextHandlers(string request) { if (request != null) case1Handler.Handle(request); else case2Handler.Handle(request); } }