设计模式--单例设计模式

设计模式是对问题行之有效的解决方案,它其实是一种思想。

单例设计模式:

  解决的问题:可以保证一个类在内存中只能有一个对象。(比如多个程序使用相同的配置信息对象时,就需要保证对象的唯一性)

  如何保证唯一性:1、不允许其他程序用new创建类对象

          2、在该类中创建一个本类实例

          3、对外提供一个方法让其他程序可以获取该对象

    达成唯一性的步骤:

          1、私有化该类构造函数(private)

          2、通过new在本类中创建一个本类对象

           3、定义一个公有的方法,将创建的对象返回

class Single
  {
    static Single s = new Single();
    private Single(){}
    public static Single getInstance()
    {
    return s;
    }
  }
//调用对象的方式采用类名调用,类名调用的前提是调用静态方法,静态访问的内容必须是静态故static Single用静态修饰
class SingleDemo
  {
    Single ss1 = Single.getInstance();
    Single ss2= Single.getInstance();
    System.out.println(ss1==ss2);
  }
//输出结果为true也就说明对象唯一

这种方式在类一 加载就会产生对象。也称作恶汉式单例模式。

对应的懒汉式如下:

懒汉式即类加载进来时,没有对象,只有调用geyInstance方式时,才会创建对象。(延迟加载形式)

class Single2
  {
    static Single2 s = null;
 private Single2(){}
 public static Single2 getInstance()
 {

  if ( s == null )

    s = new Single2 ();

   return s;
 }
  }

真实开发时饿汉式使用较多,因为懒汉式在用的时候如果碰见多线程问题有可能出现 对象的唯一性问题存在安全隐患。(面试时饿汉式碰见的多)

原文地址:https://www.cnblogs.com/beulas/p/beulas.html