您的位置:首页 > 其它

单例

2016-07-25 18:23 197 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/dandan_deyoushang/article/details/52026171

第一种单例模型

class Singleton01{

    private Singleton01(){}
    private static Singleton01 instance;
    /**使用的对象锁为Singleton01.class*/
    public  static synchronized Singleton01 getInstance() {
        if(instance==null){
            instance=new Singleton01();
        }
        return instance;
    }
    //public void show(){}

}

第二种单例模型

class Singleton02{//懒汉单例 (大对象,稀少用)
    private Singleton02(){}
    private static Singleton02 instance;
    /**使用的对象锁为Singleton01.class*/
    public static  Singleton02 getInstance() {
        if(instance==null){
         synchronized (Singleton02.class) {
          if(instance==null){
             instance=new Singleton02();
          }
         }
        }
       return instance;
    }
    //public void show(){}
}

第三种单例模型

class Singleton03{//饿汉单例 (小对象,频繁用)

    private Singleton03() {}
    /**类加载时初始化此属性*/
    private static Singleton03 instance=new Singleton03();
    public static Singleton03 getInstance() {
        return instance;
    }
    //public static void display(){}
    //public void show(){}
}
第四种单例模型
class Singleton04{
    private Singleton04(){}
    /**采用此内部类延迟Singleton04对象的创建,何时需要何时创建,
     * 是Singleton03此方案一种优化*/
    private static class Inner{
         static Singleton04 instance=
         new Singleton04();
    }
    public static Singleton04 getInstance(){
        return Inner.instance;
    }
    public static void display(){}
    //public void show(){}
}
第五种单例模型
enum Singleton05{//特殊的类型,Singleton05.class
    instance;//对象(类加载时创建)
    public void show(){}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: