Effective Java—创建和销毁对象

第1条:考虑用静态工厂方法代替构造器

1. 静态工厂方法与构造器不同的第一大优势在于,他们有名称。

2. 静态工厂方法与构造器不同的第二大优势在于,不必在每次调用他们的时候都创建一个新对象。

3. 静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象。

4. 静态工厂方法与构造器不同的第四大优势在于,在创建参数化返回类型实例的时候,它们使代码变得更加简洁。

5. 静态工厂方法的主要缺点在于,类如果不含公有的或者受保护的构造器,就不能被子类化。

6. 静态工厂方法的第二个缺点在于,他们与其他的静态方法实际上没有任何区别。

  切忌第一反应就是提供共有的构造器,而不先考虑静态工厂

第2条:遇到多个构造器参数时要考虑用构建器

静态工厂和构造器有个共同的局限性:它们都不能很好的扩展到大量的可选参数。

简而言之,如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是种不错的选择,特别是当大多数参数都是可选的时候。与使用传统的重叠构造器模式相比,就使用Builder模式的客户端代码将更易于阅读和编写,构建器也比JavaBeans更加安全。

第3条:用私有构造器或者枚举类型强化Singleton属性

Singleton指仅仅被实例化一次的类。

第4条:通过私有构造器强化不可实例化的能力

由于只有当类不包含显示的构造器时,编译器才会生成缺省的构造器,因此我们只要让这个类包含私有构造器,他就不能被实例化了。

第5条:避免创建不必要的对象

最好重用对象而不是每次需要的时候创建一个相同功能的对象。如果对象是不可变的,他就始终可以被重用。

第6条:消除过期的对象引用

第7条:避免使用终结方法

中介方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定、以及可移植性问题。

posted @ 2017-01-11 13:10  wenxudong  阅读(67)  评论(0)    收藏  举报