码迷,mamicode.com
首页 > 编程语言 > 详细

java设计模式(一)单例模式

时间:2017-03-21 22:25:16      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:构造   div   加载   java设计   blog   定义   ==   span   str   

单例模式保证系统中的类只有一个实例。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式可以分为两种模式:饿汉模式、懒汉模式。

1、饿汉模式

public class EhanSingleton {

    //定义私有无参构造,防止通过new方式获取类实例
    private EhanSingleton(){
    }

    //创建类的唯一实例,使用private、static修饰,保证类加载及创建实例,所以称为饿汉模式
    private static EhanSingleton ehanSingleton = new EhanSingleton();

    //提供用于获取实例的方法
    public static EhanSingleton getInstance(){
        return ehanSingleton;
    }
}

测试

public class test {
    public static void main(String[] args) {
        EhanSingleton e1 = EhanSingleton.getInstance();
        EhanSingleton e2 = EhanSingleton.getInstance();
        System.out.println(e1 == e2);//true,结果显示e1、e2为同一实例
    }
}

2、懒汉模式

public class LanhanSingleton {

    //定义私有无参构造,防止通过new方式获取类实例
    private LanhanSingleton(){
    }

    //声明类的唯一实例
    private static LanhanSingleton lanhanSingleton;

    //提供用于获取实例的方法,当第一次获取时创建实例,所以称为懒汉模式
    public static LanhanSingleton getInstance(){
        if(lanhanSingleton == null) lanhanSingleton = new LanhanSingleton();
        return lanhanSingleton;
    }
}

测试

public class test {
    public static void main(String[] args) {
        LanhanSingleton l1 = LanhanSingleton.getInstance();
        LanhanSingleton l2 = LanhanSingleton.getInstance();
        System.out.println(l1 == l2);//true,结果显示l1、l2为同一实例
    }
}

 3、饿汉模式、懒汉模式区别

  1)饿汉模式在类加载时实例就被创建,故类加载时比较慢,但运行时获取速度快。懒汉模式则相反。

  2)饿汉模式是线程安全的,懒汉模式是非线程安全的。

  

java设计模式(一)单例模式

标签:构造   div   加载   java设计   blog   定义   ==   span   str   

原文地址:http://www.cnblogs.com/sunjf/p/java_singleton.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!