Effective Java—创建和销毁对象
第1条:考虑用静态工厂方法代替构造器
1. 静态工厂方法与构造器不同的第一大优势在于,他们有名称。
2. 静态工厂方法与构造器不同的第二大优势在于,不必在每次调用他们的时候都创建一个新对象。
3. 静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象。
4. 静态工厂方法与构造器不同的第四大优势在于,在创建参数化返回类型实例的时候,它们使代码变得更加简洁。
5. 静态工厂方法的主要缺点在于,类如果不含公有的或者受保护的构造器,就不能被子类化。
6. 静态工厂方法的第二个缺点在于,他们与其他的静态方法实际上没有任何区别。
切忌第一反应就是提供共有的构造器,而不先考虑静态工厂
第2条:遇到多个构造器参数时要考虑用构建器
静态工厂和构造器有个共同的局限性:它们都不能很好的扩展到大量的可选参数。
简而言之,如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是种不错的选择,特别是当大多数参数都是可选的时候。与使用传统的重叠构造器模式相比,就使用Builder模式的客户端代码将更易于阅读和编写,构建器也比JavaBeans更加安全。
第3条:用私有构造器或者枚举类型强化Singleton属性
Singleton指仅仅被实例化一次的类。
第4条:通过私有构造器强化不可实例化的能力
由于只有当类不包含显示的构造器时,编译器才会生成缺省的构造器,因此我们只要让这个类包含私有构造器,他就不能被实例化了。
第5条:避免创建不必要的对象
最好重用对象而不是每次需要的时候创建一个相同功能的对象。如果对象是不可变的,他就始终可以被重用。
第6条:消除过期的对象引用
第7条:避免使用终结方法
中介方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定、以及可移植性问题。

浙公网安备 33010602011771号