單例模式

回到首頁☞

單例模式–singleton pattern :是非常常見的設計模式,過渡使用會造成弊大於利的後果。
爲了節省資源,很多地方我們只需要一個實例即可,這種實例往往沒有狀態,只是功能類。例如連接池。

單例對象一定要注意儘量不要有實例域,構造方法私有

1、角色和類圖

  • Singleton:單例模式只有這麼一個角色,用於返回唯一對象。
    在這裏插入圖片描述

2、簡單單例模式

2.1、單例類

  • 靜態私有初始化一個實例。
  • 私有化構造函數,不允許new。
  • 通過getInstance 返回實例。
package com.wht.schema.singleton;

/**
 * 單例模式
 * @author JDIT
 */
public class Singleton {
  private static Singleton singleton = new Singleton();

  private Singleton() {
    System.out.println("生成一個實例。");
  }

  public static Singleton getInstance() {
    return singleton;
  }
}

2.2、測試類

import com.wht.schema.singleton.Singleton;
import org.junit.Test;

/**
 * @author JDIT
 */
public class SchemaTestClient {
  @Test
  public void singletonTest() {
    Singleton singleton1 = Singleton.getInstance();
    Singleton singleton2 = Singleton.getInstance();
    System.out.println("是否爲同一個實例:" + (singleton1 == singleton2));

  }
}

3、小結

以前學習單例模式是層層遞進式的,這個一步到位,比較通用的是這個模式。
而真正的開發會涉及併發和對象回收的問題,有時候不必糾結是否必須單例,但是必須確保能拿到實例。

回到首頁☞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章