A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

连环画

初级黑马

  • 黑马币:31

  • 帖子:10

  • 精华:0

来到黑马学习已经快四个月了,在这里每天都过得很充实,早上睁开眼就是敲代码,晚上睡觉闭上眼脑子里还是只有代码·····
今天和大家分享一下单例模式的几个小demo
1、懒汉写法,常用写法
1

2

3

4

5

6

7

8

9

10

11

class LazySingleton{
    private static LazySingleton singleton;
    private LazySingleton(){
    }
    public static LazySingleton getInstance(){
        if(singleton==null){
            singleton=new LazySingleton();
        }
        return singleton;
    }   
}

2、恶汉写法,缺点是没有达到lazy loading的效果
1

2

3

4

5

6

7

class HungrySingleton{
    private static HungrySingleton singleton=new HungrySingleton();
    private HungrySingleton(){}
    public static HungrySingleton getInstance(){
        return singleton;
    }
}

3、静态内部类,优点:加载时不会初始化静态变量INSTANCE,因为没有主动使用,达到Lazy loading
1

2

3

4

5

6

7

8

9

class InternalSingleton{
    private static class SingletonHolder{
        private final static  InternalSingleton INSTANCE=new InternalSingleton();
    }   
    private InternalSingleton(){}
    public static InternalSingleton getInstance(){
        return SingletonHolder.INSTANCE;
    }
}



6 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
不错不错  
回复 使用道具 举报
不错嘛  
回复 使用道具 举报
厉害了   
回复 使用道具 举报
厉害了  棒棒棒  
回复 使用道具 举报
加油加油  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马