设计模式:从传统到 Clojure 的转变
设计模式是解决反复出现问题的通用、可复用方案,是面向对象编程的标志,在 Java 和 Ruby 等领域提供了通用的词汇。然而,设计模式也可能导致代码冗长和样板化。Paul Graham 认为,一种语言中设计模式的存在和使用,表明该语言本身存在缺陷,而不是解决当前问题的必然结果。
常见设计模式在 Clojure 中的消解
许多常见的设计模式在 Clojure 中变得不必要或不可见,以下是一些例子:
1. Listener 和 Observer :由于一等函数和动态类型,它们只是在相关事件发生时调用的函数。参考类型的监视功能就是一个例子。此外,优先使用不可变值,大大减少了需要跟踪的可变事物的范围。
2. Abstract Factory、Strategy 和 Command :如果有多种功能实现,无论是生成不同类型或配置的值,还是实现算法的变体,都不需要创建复杂的工厂或上下文,一个简单的函数就可以解决问题。
3. Iterator :迭代器完全被序列所取代,通过 map 等函数可以轻松、声明式地使用序列。
4. Adapter、Wrapper 和 Delegate :在其他语言中,由于不灵活的类型层次结构,这些模式是必要的,但在 Clojure 中,协议允许为现有类型正交地定义新行为,而无需继承、适配或包装。
5. Memento :在对象的突变之上层叠一个通用 API 只能解决最机械的问题(A
超级会员免费看
订阅专栏 解锁全文
836

被折叠的 条评论
为什么被折叠?



