名次乱解:伪typedef,有的老兄因为Java里没有typedef就转而使用extends来实现类似typedef的方法,没错,您猜对了,public class MyFile extends java.io.File,而MyFile这个类里面是空白一片。
实际上这种伪typedef很常见,而在我看来这种typedef大部分时间里应该是用来让开发人员专注于某个领域内的概念,这种情况在团队好不容易完成了对某个领域的建模后比较常见,大家好不容易闹明白了某个自己不太熟悉的业务领域,急于建模并落实到代码里,这时,忽然发现某个某个概念折腾来折腾去也无非就是个装了String的List,于是public class StringList extends ArrayList,负责一些的也许会自己加一些专门的方法,而不负责的就只好维持一片空白了。
不过有的时候我也怀疑这种为了让人专注于领域而进行的伪typedef:因为一个好奇心比较强的人完全可以一路顺着继承树追上去,然后发现也无非就是某某Java核心类,在这以后,我就不敢肯定是否还会专注于这个领域的概念、模型了,也许他会一直隐约觉得这就是某某类,而且父类留存的方法也会留下隐患,造成一些比较隐蔽的误区。这种情况下可能composite模式还稍微好用一些——实际上大部分时间里也就是个delegate。
由于Java 5里又出现了泛型,伪typedef的不利影响也要与时俱进一些,具体的还是看最上面的dW里Brian Goetz的这篇文章吧,很有启发。