在Clojure中,你當然可以做MVC,但我建議使用Clojure參考手錶來實現它。
代碼會是這樣的:
; define the model as an immutable structure stored in a ref
(def model (ref (create-my-model)))
; function to update the UI when the model changes
(def update-function [old-model new-model]
(do-whatevever-updates old-model new-model))
; add a watch to the model to call update-function when a change happens
(add-watch model :on-update
(fn [key reference old-state new-state]
(if (not= old-state new-state)
(update-function old-state new-state))))
此外,如果你正在構建Clojure中的一個圖形用戶界面,它可能是值得考慮看看現有的一些Swing庫的包裝,例如:
如果你用Clojure做了很多Swing,你可能會發現[seesaw](https://github.com/daveray/seesaw)有用。 – kotarak
我是第二蹺蹺板。非常實用且一致的界面。 – MHOOO