在过去的8年里,我一直在C#和Java之间来回走动.
令我印象深刻的是,我完全停止在C#中使用"模板方法"设计模式.实际上,在C#中我已经开始认为这种模式是一种反模式.
http://en.wikipedia.org/wiki/Template_method_pattern
回到Java,我发现这个模式还活着.我仍然认为它看起来很古老,但是我意识到在java中没有别的方法可以做到这一点.Java看起来也很古老;)
既然这会出现,为什么它是反模式?
很多时候,由于"错误的原因",它会占用你的继承层次结构.
基类有可能被各种不相关的代码弄乱.
它会迫使您在开发过程中很早就锁定设计.(在很多情况下过早锁定)
在稍后阶段改变这一点变得越来越难.
因此,对于闭包/委托/函数指针,您通常会传递一些函数而不是子类.
所以回到这个问题:
如果您的语言有闭包/委托/功能,您使用模板方法,何时?