Pull to refresh

Comments 1

Почему, если есть некая общность в поведении, нельзя сделать так, чтобы она реализовывалась некоторым единым кодом (в виде шаблона или системы классов)? Например, реализовать цепочку как таковую, составить требуемую цепочку (требуемого вида и наполнения) и, затем, использовать её в своём приложении.

Лично для меня вопросы возникают уже в самом начале рассуждений:

Вначале напишем enum PriorityLevel с уровнями ошибки.

Почему здесь нужен enum? А если мы придумаем новый уровень ошибок, то придётся править в нескольких местах?

Логика подсказывает, что, прежде всего, нужен справочник уровней ошибок. Можно было бы ожидать, что такие вещи описываются в приложении декларативно (хотя и могут отдельно записываться в базу метаданных приложения), а все необходимые цепочки собираются в момент старта (загрузки) приложения.

  1. Шаблон «цепочка ответственности» может затруднить определение того какой Handler объект отвечает за обработку конкретного запроса. Это может затруднить отладку кода и понимания его поведения.

Вот было бы здорово, если бы изнутри кода можно было бы узнавать, исполняется ли код в отладочном режиме, или он исполняется в боевом режиме! Здесь могла бы выть своя «цепочка ответственности», где по цепочке передаётся текущий обработчик.

Но!

Это всё — конечные автоматы!!

Почему нельзя саму программу сразу делать в конечных автоматах (например, по Шалыто) ?!?

Sign up to leave a comment.

Articles