Какой шаблон проектирования вы бы рассмотрели, когда требуется регистрация? - PullRequest
12 голосов
/ 21 августа 2009

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

Какой шаблон проектирования наиболее популярен / подходит для регистрации?

Я имею в виду Шаблон команды , который требует текущего пользователя и действия. Выполните действие и запишите в журнал.

Что ты думаешь? Любые другие альтернативы, которые я могу рассмотреть?

Спасибо.

Ответы [ 5 ]

10 голосов
/ 21 августа 2009

Вы можете использовать AOP для применения регистрации без какого-либо навязчивого поведения. АОП может чувствовать себя смесью прокси и шаблона декоратора.

4 голосов
/ 08 августа 2011

Шаблон наблюдателя хорошо подходит для каркаса логирования. Вы можете иметь класс Logger, расширяющий Observable, и дочерние классы, такие как log to console, log to Database и log to File system и т. Д., И каждый дочерний класс реализует Observer. Теперь всякий раз, когда регистрируется сообщение журнала, все классы наблюдателей, зарегистрированные в классе Logger, будут уведомлены, так что каждый дочерний класс ex: log to console будет записывать сообщение в консоль. Кроме того, класс Logger может следовать шаблону Singleton, чтобы гарантировать, что один экземпляр Logger доступен через наше приложение.

4 голосов
/ 21 августа 2009

Не объединяйте команду и запись Памятка .

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

Сама запись журнала может быть Memento или сводкой Memento .

Регистратор является своего рода Factory , который создает Mementos для зарегистрированных событий.

Как и в большинстве случаев, у вас есть большое количество взаимосвязанных шаблонов проектирования. Какой «один» шаблон является «наиболее популярным / подходящим», в него не входит.

Вопрос в том, "что должно происходить?"

2 голосов
/ 21 августа 2009

Я согласен, я думаю, что шаблон команды подойдет больше всего, так как вы бы перечислили все действия.

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

1 голос
/ 21 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...