单例模式

设计模式
 
定义:设计模式是一套被反复使用、多人知晓的、经过分类编目的、代码设计经验的总结。
目的:为了可重用代码、使代码更容易的被他们理解、保证代码的可靠性。
 
单例模式
   
作用:保证应用程序中某个实例有且只有一个 
应用场合:有些对象只要一个就够了
 
分为懒汉式饿汉式:
区别:懒汉式是在加载类时就创建了实例,线程安全
          饿汉式是在运行时创建实例,线程不安全
 
示例:
 1 //饿汉式
 2 public class Singleton {
 3 
 4       //1、将构造方法私有化,不允许外部直接创建对象
 5       private Singleton() {
 6 
 7       }
 8 
 9       //2、创建类的唯一实例,用private static修饰
10       private static Singleton instance = new Singleton();
11 
12       //3、提供一个用于获取实例的方法,用public static修饰
13       public static Singleton getInstance() {
14             return instance;
15       }
16 }

 

//懒汉式
public class Singleton2 {

      //1、将构造方法私有化,不允许外部直接创建对象
      private Singleton2() {

      }

      //2、声明一个类的实例,用private static修饰
      private static Singleton2 instance;

      //3、提供一个用于获取实例的方法,用public static修饰
      public static Singleton2 getSingleton2() {
            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("是同一个实例");
            }else {
                  System.out.println("不是同一个实例");
            }

            Singleton2 s3 = Singleton2.getSingleton2();
            Singleton2 s4 = Singleton2.getSingleton2();

            if (s3 == s4) {
                  System.out.println("是同一个实例");
            }else {
                  System.out.println("不是同一个实例");
            }
      }
}

 

 

posted @ 2017-03-25 15:23  liangpusheng  阅读(131)  评论(0)    收藏  举报