单例设计模式之饿汉式和懒汉式

1.设计模式:

设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。

2.单例模式的概念:

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。

①单例模式之饿汉式:

1.饿汉式单例类
package pattern.singleton;
//饿汉式单例类.在类初始化时,已经自行实例化 
public class Singleton1 {
    //私有的默认构造子
    private Singleton1() {}
    //已经自行实例化 
    private static final Singleton1 single = new Singleton1();
    //静态工厂方法 
    public static Singleton1 getInstance() {
        return single;
    }
}

 ②单例模式之懒汉式(注意会存在线程的安全问题)

2.懒汉式单例类
package pattern.singleton;
//懒汉式单例类.在第一次调用的时候实例化 
public class Singleton2 {
    //私有的默认构造子
    private Singleton2() {}

    //注意,这里没有final    
    private static Singleton2 single;

    //只实例化一次
    static{
        single = new Singleton2();
    }

    //静态工厂方法 
    public synchronized  static Singleton2 getInstance() {
         if (single == null) {  
             single = new Singleton2();
         }  
        return single;
    }
}

3.懒汉模式与恶汉模式的区别:

懒汉模式:在类加载的时候不被初始化。

饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。

饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用,懒汉模式在创建对象时不加上synchronized,会导致对象的访问不是线程安全的。

作者:Roger_CoderLife

链接:https:blog.csdn.net/Roger_CoderLife/article/details/82773956

本文为Roger_CoderLife的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

猜你喜欢

转载自blog.csdn.net/Roger_CoderLife/article/details/82773956