execução financeira Conta padrão em Clojure: ref ou agente?
-
08-07-2019 - |
Pergunta
Eu estou trabalhando meu caminho através Análise de Fowler e exemplos de programação -me em Clojure como forma de desenvolver uma melhor compreensão de ambos.
Colocar questões persistência / durabilidade para o lado para o momento 1 , ele parece que refs Clojure com sua sincronização seria o obviamente melhor abordagem.
Por outro lado, dadas as Regras de lançamento que são acionados por entradas para a conta, produzindo mais transações em ainda mais contas, talvez agentes e suas atualizações assíncronas seria melhor. Neste ponto, parece que eu pode ter que tentar um pouco de ambos. Alguém tem alguma sugestão sobre esta decisão de design particular?
1 eu estou supondo que se eu conseguir a funcionalidade e conceitos de trabalho bem, eu vou ser capaz de mapear tudo em um esquema DB sensata mais tarde.
Solução
Todos os objetos mutáveis ??em Clojure são projetados para dar-lhe um visão consistente de como as coisas mudam ao longo do tempo . Se você tiver vários objetos que mudam em relação uns aos outros, então você precisa criar um cronograma que inclui todos eles e refs são projetados para esse fim.
Você também pode estar interessado no conceito de observadores (add-watch reference key fn)
que você pode adicionar ao refs para impor invariantes de transação.