表达问题:面向对象与函数式编程的优雅解法
2025-09-07
本文探讨了软件设计中的“表达问题”:在既要添加新数据类型又要添加新操作的场景下,如何避免修改已有代码。作者通过C++和Haskell的例子展示了面向对象和函数式编程在解决这个问题上的局限性,并深入分析了访问者模式和Clojure的多方法及协议的优雅解法。Clojure的解法巧妙地利用了开放方法的特性,将方法定义与类型定义分离,从而实现了灵活的扩展,避免了修改已有代码的困境。
开发
表达问题