44、设计模式:从传统到 Clojure 的转变

设计模式:从传统到 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值