Шаблоны проектирования для облегчения такого поведения (поведение журнала аудита и отмена)

Я работаю над системой, которая должна демонстрировать следующее поведение:

  1. Audit Trail
  2. Отменить / вернуться к определенной версии (такое действие само будет регистрироваться в журнале аудита)

Я видел немного похожий вопрос здесь , но он касается только части того, что я пытаюсь сделать. Более того, я хочу зафиксировать весь жизненный цикл объекта (например, CRUD).

Я собираюсь реализовать это следующим образом:

  1. Имею класс ChangeManager, основанный на шаблоне наблюдателя.
  2. Получите мой объекты из базового объекта, который «завершает» изменения в шаблоне команды
  3. Уведомляет ChangeManager с помощью объекта команды о любом из событий CRUD

Примечание: Команда 'change' будет состоять из:

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

Это просто "из моей головы" - и в подходе, который я думаю использовать, могут быть дыры - я был бы признателен за некоторую помощь от людей, которые реализовали такое поведение раньше, а также общие советы, плюсы и минусы минусы подхода, который я описал выше - или, может быть, лучший / альтернативный подход. Я буду очень признателен за пару фрагментов, которые укажут мне правильное направление!

Я буду использовать C # в качестве языка реализации.

7
задан Community 23 May 2017 в 12:04
поделиться