public class Demo{
private static Demo instance;
private Demo(){
throw new Exception("不能new实例哦");
}
public static Demo getInstance(){
if(instance==null){
instance = new Demo();
}
return instance;
}
}
上面的例子是一个饿汉式的写法, 是线程不安全的.如果需要安全的可以使用加锁!
优点: 整个对象在内存中只有一个实例,避免了多次new和gc 所产生的内存开销!
缺点: 对测试不利,不利于扩展
android 中需要注意的是尽量用getApplication()的Context来初始化 工具类 这样可以避免内存泄露!