1.考虑用静态工厂方法代替构造器
优点
- 相比构造器,静态工厂有名称
- 不必在每次调用的时候都创建一个新对象
- 可以返回原返回类型的任何子类型的对象
- 在创建参数化类型实例的时候,使代码变得更加简洁
缺点
- 类如果不含公有的或者受保护的构造器,就不能子类化
- 与其他的静态方法实际上没有任何区别
2.遇到多个构造器参数时要考虑用构造器
- 重叠构造器方式
缺点是一旦参数过多,构造方法就几何增加
- JAVABeans模式
缺点在于构造过程分到了几个调用中,构造中,JavaBean可能处于不一致的状态,导致失败。
- Builder模式
让客户端利用所有必要的参数调用构造器,得到一个builder对象,然后调用类似于setter的方法,来设置每个相关的可选参数。最后调用无惨的build方法生成不可变的对象。
3.用私有构造器或枚举类型强化Singleton属性
- 私有构造器,公有元素
- 静态工厂实现
但序列化时还需要额外工作
- 枚举实现
枚举方式实现,额外提供了序列化功能
4.通过私有构造器强化不可实例化的能力
背景:工具类不希望被实例化
5.避免创建不必要的对象
无意识的自动装箱拆箱可能也可能带来性能开销
但这是在对象很多的情况下。
6.消除过期的对象引用
自己管理内存的类,可能存在内存泄露
下面的栈中会维护弹出对象的引用。栈会越来越大
内存泄露的另一个常见来源是缓存
内存泄露的第三个常见来源是监听器和其他回调
7.避免使用终结的方法
缺点在于不一定会执行。