Effective java 整理(第三版)

2019-06-04  本文已影响0人  陈沉成染

整理一下自己effective java

创建 和销毁对象

  1. 静态工厂方法代替构造器

优点

缺点

  1. 遇到多个构造器参数的时候用建造者模式(Builder)
    构造器多个参数 导致创建错误(容易输错,且传了许多没意义的参数)
    javabean模式中(get set) 导致构造过程不一致 ,使类不可能不变
    而builder 模式中就没有这两种问题

  2. 用私有构造器或枚举类型强化单列
    Singleton通常表示一个无状态对象,函数,本质唯一的系统组件。
    两种实现

   public enum Elvis{
      INSTANCE;
      public void leaveTheBuilding(){
      }
    }
  1. 通过私有构造器强化不可实例的类
    就是说通过私有构造器修饰工具类
  1. 优先考虑依赖注入引用资源

  2. 创建不必要的对象
    不可变的对象指域不会发生变化(用静态工厂方法创建)
    比如正则里的Pattern对象 ,一旦创建就是不变的。而且耗费较高,因此要缓存起来
    优先使用基本类型,当心无意识自动装箱

  1. 消除过期的对象引用
    例子
    手写的一个栈 (用一个Object[] 数组来存储对象,一个int 的值管理 栈顶)
    当栈再收缩时 应该 置为null 否则内存泄漏(但类在自己管理内存的时候)
    weakhashmap 一个对象的生命周期的由外键的引用决定时就可用
    接口回调 和监听器 产生的内存泄漏

  2. 避免使用终结方法 和清除方法

  3. try - with -resource 优先于 try - finally

    try(Inputstram in =new FileInputStream(path);
          OutputStream out = new FileOutPutStream()){
        byte[] buf = new byte[BUFFER_SIZE];
        int n;
        while(n = in.read(buf) >= 0){
          out.write(buf,0,n);
        }  
    }
上一篇 下一篇

猜你喜欢

热点阅读