编程语言
首页 > 编程语言> > Java 学习:设计模式 - 单例模式

Java 学习:设计模式 - 单例模式

作者:互联网

单例模式

单例:单个实例

  1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,
    对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法

  2. 单例模式有两种:a). 饿汉式单例, b). 懒汉式单例

步骤:
1).将构造器私有化,防止外部直接 new
2).在类的内部创建对象
3). 向外提供一个静态的公共方法。getInstance


示例:饿汉式单例:

public class SingleObject{
    //私有构造器
    private SingleObject(){
    }

    //内部实例对象
    private static SingleObject singleObject = new SingleObject();

    //向外部提供静态公共方法,返回对象
    public static SingleObject getInstance(){
          return singleObject;
    }
}

示例:懒汉式单例:

public class SingleObject{
    //私有构造器
    private SingleObject(){
    }

    private static SingleObject singleObject;

    //向外部提供静态公共方法,返回对象
    public static SingleObject getInstance(){
          //判断对象是否存在,不存在就创建,最终返回对象
          if(singleObject == null){
              singleObject = new SingleObject();
          }
          return singleObject;
    }
}

饿汉式单例 和 懒汉式单例对比:

  1. 二者主要区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例;而懒汉式是在第一次使用时才创建。

  2. 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。

  3. 饿汉式存在浪费资源的可能。因为如果程序中一个对象实例都没有使用,那么饿汉式创建的对象就浪费了;
    而懒汉式是使用时才创建,就不存在这个问题。


在JavaSE标准类中,java.lang.RunTime 就是经典的单例模式:
JDK RunTime原码


标签:Java,SingleObject,对象,单例,饿汉,设计模式,懒汉,singleObject
来源: https://www.cnblogs.com/justguang/p/15302358.html