java设计模式 - 单例模式

来源:互联网 发布:淘宝怎么修改价钱 编辑:程序博客网 时间:2024/06/05 06:28

视频:http://www.imooc.com/video/1772


什么是单例模式?
保证应用程序中某个实例有且只有一个,单例模式分:饿汉模式、懒汉模式,应用场合:有些对象只需要一个就足够了,作用:保证应用程序中某个实例有且只有一个

饿汉模式

/** * 饿汉模式:类被加载时候创建该实例 */public class Singleton {    // 1.将构造方法私有化,不允许外部直接创建对象    private Singleton(){}    // 2.创建类的唯一实例,使用private static修饰    private static Singleton instance = new Singleton();    // 3.提供一个用于获取实例的方法,使用public static修饰    public static Singleton getInstance(){        return instance;    }}

懒汉模式

/** * 懒汉模式:运行时创建 */public class Singleton2 {    // 1.将构造方式私有化,不允许外部直接创建对象    private Singleton2(){}    // 2.声明累的唯一实例,使用private static修饰    private static Singleton2 instance;    // 3.提供一个用于获取实例的方法,使用public static修饰    public static Singleton2 getInstance(){        if(instance == null){            instance = new Singleton2();        }        return instance;    }}

代码测试

public class Test {    public static void main(String[] args) {        // 饿汉模式        Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();        if(s1 == s2){            System.out.println("s1和s2是同一个实例");        }else{            System.out.println("s1和s2不是同一个实例");        }        // 懒汉模式        Singleton2 s3 = Singleton2.getInstance();        Singleton2 s4 = Singleton2.getInstance();        if(s3 == s4){            System.out.println("s3和s4是同一个实例");        }else{            System.out.println("s3和s4不是同一个实例");        }    }}

总结
饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全
懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

0 0
原创粉丝点击