自然、人类、机器
Home › Forums › 《冒号课堂》讨论区 › 成员函数的枷锁 › Reply To: 成员函数的枷锁
原来你说的是这个意思。没错,这种情况用自由函数(free function)(即你所说的普通函数)肯定是更好,但不是所有的OOP语言都支持的(比如Java、C#)。如果是你所说的情况,哪怕不涉及多态问题,这类操作也应作为自由函数或者某个utility类的静态方法。
至于如何解决你提到的多态问题,《冒号课堂》430-434页其实已经给出了一个答案:在语法不支持多分派(multiple dispatch)的OOP语言中,可以采用visitor模式,既可避免不必要的耦合,又可避免类型判断。