创建or销毁对象

用静态工厂方法代替构造器
优势:
1 它们有名称
2 不必在每次调用他们的时候都创建一个新对象
3 可以返回类型的任何子类型的对象
4 所返回的对象的类可以随着每次调用儿发生变化,这取决于静态工厂方法的参数值
5 方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在

劣势:
1 类如果不含公有的or受保护的构造器,就不能被子类化
2 程序员很难发现他们
常用名称
from
of
valueOf
getInstantce
create newInstance
getType
newType

遇到多个构造器参数时要考虑使用构造器
优势:
1 使用JavaBeans模式,在这种模式下,先调用一个无参数构造器来创建对象,然后再调用setter方法来设置每个必要的参数,以及每个可选参数。这种方式弥补了重叠构造器模式的不足,创建实例很容易,产生的代码也很容易阅读。

劣势:
1JavaBeans模式使得类做成不可变的可能性不复存在,需要程序员付出额外的努力来确保它的线程安全

综上所述,还有第三种代替方法,既能保证像重叠构造器模式那样安全,也能像JavaBeans模式那么好的可读性,就是使用Builder模式,参考 Effective的10页~13页
如果类的构造器or静态工厂中具有多个参数,设计这种类时,Builder模式是一种不错的选择。

用私有构造器or枚举类型强化singleton属性

用私有构造器强化不可实例化的能力

优先考虑依赖注入来引用资源
1当创建一个新的实例的时候,就将该资源传到构造器当中,这就是依赖注入的一种形式
避免创建不必要的对象
1 优先使用基本类型而不是装箱基本类型
2 不要使用new String()来构造多余的String对象
消除过期的对象引用
避免使用终结方法和清除方法
使用try-with-resource 优先于 try-finally

创建or销毁对象
创建or销毁对象
如上图使用jdk1.7新增的try-catch-resources语法在try的()内部创建资源,创建的资源在退出try-block时候会自动调用该资源的close方法。Resource实现了AutoCloseable的close方法:
创建or销毁对象
总结:
使用try-catch-resources结构无论是否抛出异常在try-block执行完毕后都会调用资源的close方法。
使用try-catch-resources结构创建多个资源,try-block执行完毕后调用的close方法的顺序与创建资源顺序相反
使用try-catch-resources结构,try-block块抛出异常后先执行所有资源(try的()中声明的)的close方法然后在执行catch里面的代码然后才是finally.
只用在try的()中声明的资源的close方法才会被调用,并且当对象销毁的时候close也不会被调用
使用try-catch-resources结构,无须显示调用资源释放。