Qual o padrão de design que você considera quando o registro é necessário?

uma aplicação em que estou a trabalhar requer o registo das acções, o utilizador que executa a acção e o tempo de acção numa base de dados.

qual o padrão de design mais popular/apropriado para o registo?

estou a pensar em Padrão de comandos {[7] } que requerem o utilizador actual e uma acção. Execute a acção e escreva para o registo.

O que achas? Posso considerar outras alternativas?

Obrigado.

Author: Henry, 2009-08-21

5 answers

Você pode usar AOP para aplicar o registo sem qualquer comportamento intrusivo. AOP pode se sentir como uma mistura de Proxy e padrão decorador.

 10
Author: Santosh Gokak, 2009-08-21 18:33:17

Não confile o comando e o registo Memento .

O comando é algo que se faz. Que pode incluir alguns aspectos comuns em todos os comandos, incluindo escrever um registo.

O registo em si pode ser um Memento ou um resumo de um Memento .

O logger é uma espécie de fábrica, que cria Memórias para eventos registados.

Como acontece com a maioria das coisas, você tem um grande número de padrões de design interligados. Qual " um "padrão é" mais popular / apropriado " não entra nele.

A pergunta é: "o que é suposto estar a acontecer?"
 4
Author: S.Lott, 2009-08-21 18:51:11

O padrão do observador é adequado para a estrutura de Registo. Você pode ter classe Logger estendendo observável, e classes de crianças como log para consola, log para Banco de dados e log para sistema de arquivos etc e cada observador de classe de crianças. Agora, sempre que uma mensagem de log é registrada, todas as classes de observadores registradas com classe Logger serão notificadas de modo que cada classe de criança ex: log para consola irá registrar a mensagem para consola. Também a classe Logger pode seguir o padrão Singleton para ter a certeza de que um único instance of Logger está disponível através da aplicação out.

 4
Author: Prashant Jadhav, 2011-08-08 06:24:03
Concordo, acho que o padrão de comando seria o mais adequado, já que você teria todas as ações listadas. Mas acho que não precisas de seguir um padrão específico para este.Você pode simplesmente ajustar um callback sobre as ações para atualizar o log. Depende da tua arquitectura e tecnologias, mas, fora da minha cabeça, o padrão de comando parece um exagero.
 2
Author: marcgg, 2009-08-21 18:00:47

O padrão de comando soa bem. Ele permite especialmente que você passe o logger para o comando e deixe o comando executar a operação de log no logger. Desta forma, você pode ter cada cuidado de ação para a formatação do próprio log e se algumas ações não devem ser registradas ou precisam de informações especiais que a arquitetura geral não precisa saber sobre ele. A desvantagem é o acoplamento das ações para o logger se você quiser evitar isso, você pode dar a cada ação um método que devolve um texto de registo que deve ser adicionado.

Se você vai ter um monte de ações diferentes, eu não acho que isso é exagero, se isso são apenas ações de banco de dados e você pode ter o framework de banco de dados realizar ações em cada ação de banco de dados, ele pode estar reinventando a roda para ter um mecanismo de registro único, mas como marcgg aponta isso depende de sua arquitetura.

 1
Author: Janusz, 2009-08-21 18:16:29