美文网首页
Effective Java:对象的创建及销毁

Effective Java:对象的创建及销毁

作者: Il_mondo | 来源:发表于2018-06-10 16:10 被阅读10次

第一节:通过静态工厂创建对象

  • 可阅读性强.
public class Person {
    private byte sex;
    private String name;

    public static Person newMan(String name){
        return new Person(0, name);
    }

    public static Person newWoman(String name){
        return new Person(1, name);
    }

    public Person(String sex, String name){
        this.sex = sex;
        this.name = name;
    }

    public static void main(String[] args){
         // 静态工厂
        Person jeck = Person.newMan("Jeck");
        // 构造
        Person tom = new Person(0, "Tom");
    }
}

相较于构造方法创建对象,静态工厂总是能很清晰的突出我们要做的事.

  • 不必在每次调用时都创建一个新的对象,比如:单例模式.
...
// 例:单例模式
private static Person INSTANCE;
public static Person newMan(String name){
    if(INSTANCE == null){
        INSTANCE = new Person(0, name);
    }
    return INSTANCE;
}

// 例:软引用持有对象
private SoftReference<Person> person;
public static Person newMan(String name){
    if(person == null || person.get() == null){
        person = new SoftReference(new Person(0, name));
    }
    return person;
}
  • 控制返回类型,可以返回具体或抽象的类.

总结:通过静态工厂创建对象更回灵活、可阅读性更好.


第三节:通过私有构造或枚举强化单例

特别注意点:防止单例的序列化

// 在类中添加此方法
private Object readResolve(){
    return INSTANCE;
}
  • 枚举实现单例模式
public enum Person{
    INSTANCE;
}

第四章:通过私有构造器强化强化不可实例化的能力

public final class Strings{
   private Strings(){ throw new AssertionError(); }

   public static boolean isEmpty(String string){
       return string == null || string.length < 0;
   }
}

第五章:避免创造不必要的对象

重用不可变对象

  • 重复创造相同对象的开销
  • 静态工厂方法与构造方法相比

相关文章

网友评论

      本文标题:Effective Java:对象的创建及销毁

      本文链接:https://www.haomeiwen.com/subject/bebteftx.html