Внедрение шаблона финансового счета в Clojure: реф или агент?
-
08-07-2019 - |
Вопрос
Я работаю над шаблонами анализа Фаулера и примерами программирования для я в Clojure как способ развить лучшее понимание обоих.
Отложив проблемы постоянства / долговечности в сторону на данный момент 1 , это Кажется, что Clojure refs с их синхронизацией было бы очевидно лучшим подходом.
С другой стороны, учитывая правила публикации, которые запускаются записями в учетной записи, производя больше транзакций в еще большем количестве учетных записей, возможно, агентов, и их асинхронные обновления будут лучше. На данный момент, похоже, мне придется попробовать немного того и другого. У кого-нибудь есть предложения по этому конкретному дизайнерскому решению?
1 Я предполагаю, что смогу заставить работать функциональность и концепции хорошо, я смогу отобразить все в разумную схему БД позже.
Решение
Все изменяемые объекты в Clojure предназначены для того, чтобы дать вам непротиворечивое представление о том, как все меняется со временем . Если у вас есть несколько объектов, меняющихся по отношению друг к другу, вам нужно создать временную шкалу, которая включает в себя все из них, и ссылки предназначены именно для этой цели. Р>
Вас также может заинтересовать концепция наблюдателей (ссылочный ключ add-watch fn)
, который можно добавить в ссылки для принудительного применения инвариантов транзакций. Р>