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.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.
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?"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.
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.