根据《Clojure编程乐趣》: 使用definterface相对于defprotocol的优势仅限于前者允许原始类型作为参数和返回值。将来,由协议生成的接口可能会得到同样的优化,因此请谨慎使用definterface,除非绝对必要,否则请优先选择协议。
我可能理解不全,但definterface会生成一个接口类,可以在Java代码中实现该接口以创建适合传递给Clojure函数的类。 协议是一种比多方法更快速、更专注的分派方式。你可以在协议中编写正在运行的代码,并由其他Clojure代码使用。