赞
踩
当有人写这样的代码时,他/她正在努力遵循基本的OO设计原则 –
Program to an interface, not to a concrete implementation
我在one of my blog posts中已经解释了这个原则。查看类继承VS接口继承部分。
要总结这篇文章,当您使用父类型的引用来引用子类型的实例时,会获得很大的灵活性。例如,如果您以后需要更改子类型实现,则可以轻松地执行此操作,而无需更改大量代码。
考虑以下方法 –
public void DoSomeStuff(Super s) {
s.someMethod();
}
并调用此方法 –
DoSomeStuff(new Sub());
现在,如果您需要更改someMethod内的逻辑,可以通过声明一个新的Sub类型,即NewSubType,并更改该实现中的逻辑来轻松实现。这样,您就不用再碰触利用该方法的其他现有代码。您仍然可以按照以下方式使用您的DoSomeStuff方法 –
DoSomeStuff(new NewSubType());
如果您将DoSomeStuff的参数声明为Sub,那么您也必须更改其实现 –
DoSomeStuff(NewSubType s) {
s.someMethod();
}
它也可能连锁/泡沫到其他几个地方。
在收集示例方面,这样可以让变更指向的列表实现更为简单。您可以轻松地使用LinkedList代替ArrayList。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。