日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 成员函数的枷锁

Home Forums 《冒号课堂》讨论区 成员函数的枷锁 Reply To: 成员函数的枷锁

#1369
hui
Keymaster

原来你说的是这个意思。没错,这种情况用自由函数(free function)(即你所说的普通函数)肯定是更好,但不是所有的OOP语言都支持的(比如Java、C#)。如果是你所说的情况,哪怕不涉及多态问题,这类操作也应作为自由函数或者某个utility类的静态方法。

至于如何解决你提到的多态问题,《冒号课堂》430-434页其实已经给出了一个答案:在语法不支持多分派(multiple dispatch)的OOP语言中,可以采用visitor模式,既可避免不必要的耦合,又可避免类型判断。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)