用静态工厂方法代替构造器
优势:
1.静态工厂方法有名字,可以增强阅读性,可以强化与其他静态工厂方法的区别。
2.静态工厂方法在返回对象时可以返回静态对象,不需要每次都创建新对象。
3.静态工厂方法可以返回原对象类型的子类型对象。
缺点:类如果没有公有的或者受保护的构造器,就不能被子类化。
遇到多个构造参数是用构建器
优势:
1.代码的可读性更高(看起来更高级)
2.可以有多个可变参数
示例:
1 | FileDownloadThread fileDownloadThread =new FileDownloadThread.Builder(i) |
通过私有构造器强化不可实例化能力
某些不需要实例化的工具类,用户往往没有写显示的构造器,但是编译器会自动提供一个公有的、无参数的构造器。所以用户可以写一个显式的私有的构造器来强制使类不可实例化,但是这么做的缺点就是该类无法被子类化。
减少不必要的对象创建
1.尽量使用基本数据类型而不是装箱基本类型,比如long 对 Long
2.在类中会重用的部分尽量使用静态代码块
尽可能避免使用终结方法finalizer
1.finalizer方法可以释放对象资源,但是java中这个方法的执行时间是不定的,设置是否执行也是不定的,所以在finalizer中的程序不能保证是否被执行和执行的时间。
2.添加finalizer方法会极大的损耗性能。
3.对于一些使用完需要关闭的对象,可以使用显示方法关闭,比如InputStream。
finalizer的用处:
1.在显示终结方法未被调用的情况下做最后的终结操作。
2.终结一些不是很重要的资源。