我经常面临想要向我无法控制的类添加其他方法的问题。例如,我可能想要一个prettyPrint可以对没有统一 api 的不同对象类型(例如特殊__str__方法)进行操作的函数。
该Nice语言R使用多种方法来实现这一点,很好地避免了访问者模式。例如,R具有plot()功能。个别程序员可以创建新类来定义数据类型(例如,网络图或股票行情数据)。次要用户/程序员然后可以编写绘图函数来填充该功能,即使他们无法访问图形或股票代码或其他绘图函数的代码。
鉴于我想稍后添加很多功能,使用class.method()似乎是不可行的。每种类型的许多class_plot()功能似乎也是一个坏主意。定义一个plot()检查类型的大函数是不可扩展的。
多方法的替代品是什么?特别是,我对可能在 Jython 和 Scala 中工作的设计感兴趣。