我們通常在Java中使用生成器模式,就像這樣:什麼是構建模式的clojure方式?
UserBuilder userBuilder = new UserBuilder();
User John = userBuiler.setName("John")
.setPassword("1234")
.isVip(true)
.visableByPublic(false)
.build();
的一些屬性有默認值,而有些則沒有。
傳遞屬性的地圖可能是一個解決方案,但它使論點真的長:
(def john (make-user {:name "John" :pass "1234" :vip true :visible false}))
所以,我的問題是,是否有一個優雅的方式來實現這一目標?
Builder模式在我看來真的只是因爲缺少命名參數的解決辦法。初始化一組只能作爲位置參數的字段非常麻煩,而且以後很難閱讀,因此構建器模式。在一次函數調用中,地圖解構實現了相同的目標,Ankur建議將地圖分割成多行以保持可讀性。 –