我们通常在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建议将地图分割成多行以保持可读性。 –