第52条:通过接口引用对象
2016-08-17 00:18
190 查看
应该优先使用接口而不是类来引用对象,考虑Vector的情况。
应该使用第一种方式,如果使用接口作为类型,程序将会更加灵活,当决定更换实现时,只需改变构造器中的类的名称(或者使用一个不同的静态工厂)。
注意,如果原来的实现提供了某种特殊的功能,而这种功能并不时这个接口通用约定所要求的,并且周围的代码又依赖于这种功能,那么新的实现也需要提供同样的功能。例如第一个声明周围的代码依赖于Vector的同步策略,那么用ArrayList来代替Vector是不正确的。
如果没有合适的接口存在,完全可以用类而不是接口来引用对象,比如String和BigInteger,Random。
List<Subscriber> subscribers = new Vector<Subscriber>(); Vector<Subscriber> subscribers = new Vector<Subscriber>();
应该使用第一种方式,如果使用接口作为类型,程序将会更加灵活,当决定更换实现时,只需改变构造器中的类的名称(或者使用一个不同的静态工厂)。
注意,如果原来的实现提供了某种特殊的功能,而这种功能并不时这个接口通用约定所要求的,并且周围的代码又依赖于这种功能,那么新的实现也需要提供同样的功能。例如第一个声明周围的代码依赖于Vector的同步策略,那么用ArrayList来代替Vector是不正确的。
如果没有合适的接口存在,完全可以用类而不是接口来引用对象,比如String和BigInteger,Random。
相关文章推荐
- 2015070301 - EffactiveJava笔记 - 第52条 通过接口引用对象(1)
- 2015070302 - EffactiveJava笔记 - 第52条 通过接口引用对象(2)
- effective java 34条 通过接口引用对象
- 通过接口引用对象
- 通过接口引用对象
- java 通过接口引用对象
- Effective Java之通过接口引用对象(五十二)
- 通过接口引用对象
- effective java 34条 通过接口引用对象
- 第五十二:通过接口来引用对象
- 34-通过接口引用对象
- 通过接口引用对象
- 通过接口引用访问实现比正常的方法调用开销大
- TAO教程之四:改进服务端之通过POA策略实现持久化的对象引用
- 实例化一个子类对象赋给父类对象引用或一个实现了接口的类的对象赋给接口的引用的好处
- (JAVA子类引用指象父类引用)JAVA克隆对象,包括父类属性,无需实现序列化接口
- JAVA 将接口的引用指向实现类的对象
- Java深拷贝除了通过实现Cloneable接口,另外还可以通过序列化实现对象的拷贝。
- C++实现对象和接口的弱引用
- 类继承接口, 通过接口对象new继承类的类(包含派生类),调用对象方法,其实其第一个接口继承的