Какое наиболее удобное место для использования регистратора? - PullRequest
1 голос
/ 17 декабря 2010

Я написал программу диспетчера задач с использованием Java и на данный момент создал единую реализацию пользовательского интерфейса. В программе на данный момент 3 слоя. Уровень представления, который взаимодействует с уровнем домена через контроллер варианта использования, и, наконец, уровень технических услуг, используемый для сохранения. В этот момент пользователь может выполнить несколько действий, таких как добавление задач, редактирование статуса задачи и т. Д. Цель моего регистратора в этой схеме - отслеживать все действия, предпринимаемые пользователями. Итак, есть несколько мест, где я мог бы вызвать регистратор, чтобы написать команду. Я не буду вести какую-либо запись на уровне представления, так как это было бы ужасным дизайнерским решением, и поэтому я остался с контроллером, интерфейсом команд (реализованным для управления выполнением всех команд с целью реализации функций отмены / повторения) ) или в классах более низкого уровня, которыми фактически манипулируют, скажем, например, класс задачи.

Я думаю, что контроллер является относительно приличным вариантом для этого, поскольку он выступает в качестве точки соприкосновения между уровнем пользовательского интерфейса и доменом, поэтому все известные команды в конечном итоге проходят через контроллер, что позволяет легко проверить, что все важные методы ведутся Причина, по которой этого нельзя делать в контроллере, заключается в том, что он снижает когезию, увеличивает сцепление и потенциально приводит к раздутому контроллеру.

Конкретные команды являются еще одним потенциальным местоположением, поскольку они также имеют всю информацию, необходимую для регистрации. Это снова приведет к тому, что команды станут менее связными и увеличат связь. Кроме того, если я не использую командный интерфейс для выполнения действий над объектом домена, тогда я теряю логирование.

Наконец, это приводит меня к реализации регистратора в методах объектов домена более низкого уровня. Это хороший кандидат, потому что регистрация всегда будет происходить, если программа используется и вся необходимая информация доступна. Единственным отрицательным моментом является то, что команды регистратора будут редко разбросаны по объектам домена более низкого уровня, что затруднит обеспечение регистрации всех правильных методов.

Я бы с удовольствием провел дискуссию об этом типе решения и был бы признателен за все ваши комментарии.

1 Ответ

1 голос
/ 17 декабря 2010

Сначала подумайте о практичности. Ведение журнала часто является проблемой технического обслуживания и администрирования. Каждый слой в вашем дизайне является кандидатом на регистрацию, но по нескольким причинам.

Не зная вашей иерархии объектов и дизайна ...

Переходя от домена к пользовательскому интерфейсу, каждый уровень представляет собой абстракцию или коллекцию поведения предыдущего уровня. Вы должны спросить себя о том, какой уровень детализации вы ищете? Было бы полезно увидеть запись команды? Было бы также полезно просматривать журналы для каждого связанного вызова уровня домена? Не всегда легко расшифровать вызовы домена и связать его с определенной командой.

...