Effective Java之创建和销毁对象 总结

版权声明:https://blog.csdn.net/qq_26814945 https://blog.csdn.net/qq_26814945/article/details/83342610

第1条 考虑用静态工厂方法代替构造器
静态工厂方法与构造器不同的第一大优势在于 它们有名称
静态工厂方法与构造器不同的第二大优势在于 不必在每次调用它们的时候都创建一个新对象
静态工厂方法与构造器不同的第三大优势在于 它们可以返回原返回类型的任何子类型的对象
静态工厂方法的第四大优势在于 在创建参数化类型实例的时候 它们使代码变得更加简洁
静态工厂方法的主要缺点在于 类如果不含公有的或者受保护的构造器 就不能被子类化
静态工厂方法的第二个缺点在于 它们与其他的静态方法实际上没有任何区别

第2条 遇到多个构造器参数时要考虑用构建器
重叠构造器模式可行 但是当有许多参数的时候 客户端代码会很难编写 并且仍然较难以阅读
JavaBeans模式在构造过程中JavaBean可能处于不一致的状态
JavaBeans模式阻止了把类做成不可变的可能
builder模式模拟了具名的可选参数
Class.newInstance破坏了编译时的异常检查
如果类的构造器或者静态工厂中具有多个参数 设计这种类时 Builder模式就是种不错的选择

第3条 用私有构造器或者枚举类型强化Singleton属性
使类成为Singleton会使它的客户端测试变得十分困难
单元素的枚举类型已经成为实现Singleton的最佳方法

第4条 通过私有构造器强化不可实例化的能力
企图通过将类做成抽象类来强制该类不可被实例化 这是行不通的

第5条 避免创建不必要的对象
要优先使用基本类型而不是装箱基本类型 要当心无意识的自动装箱

第6条 消除过期的对象引用
清空对象引用应该是一种例外 而不是一种规范行为
只要类是自己管理内存 程序员就应该警惕内存泄漏问题
内存泄漏的另一个常见来源是缓存
内存泄漏的第三个常见来源是监听器和其他回调

第7条 避免使用终结方法
终结方法(finalizer)通常是不可预测的 也是很危险的 一般情况下是不必要的
不应该依赖终结方法来更新重要的持久状态
使用终结方法有一个非常严重的(Severe)性能损失
显式的终止方法通常与try-finally结构结合起来使用 以确保及时终止
如果终结方法发现资源还未被终止 则应该在日志中记录一条警告

猜你喜欢

转载自blog.csdn.net/qq_26814945/article/details/83342610