banner
Onei

Onei

github
nintendo switch
discord server
steam
pixiv
bento
follow

設計模式

🕵️ 設計模式是什麼#

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重複使用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合理的運用設計模式可以完美解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。簡單說:

模式: 在某些場景下,針對某類問題的某種通用的解決方案。

場景: 專案所在的環境

問題: 約束條件,專案目標等

解決方案: 通用、可複用的設計,解決約束達到目標。

🗂️ 分類#

  • 創建型模式
    物件實例化的模式,創建型模式用於解耦物件的實例化過程。
  • 結構型模式
    把類或物件結合在一起形成一個更大的結構。
  • 行為型模式
    類和物件如何互動,及劃分責任和演算法。

🔒 單例模式#

讓某個類只建立一個物件

  • 構造方法私有化 因為建立物件使用構造方法 所以可以通過限制構造方法的使用來限制物件的建立
  • 建立一個用於保存物件的靜態變數
  • 對外提供一個用於獲取物件的方法 (一定是靜態方法)

餓漢模式#

class HungrySingleton {
	private HungrySingleton() {
		System.out.println("HungrySingleton構造方法執行");
	}

	static HungrySingleton instance = new HungrySingleton();

	static HungrySingleton getInstance() {
		return instance;
	}
}

特點: 當類被加載時,靜態變數instance就會被初始化,此時類的私有構造方法會被調用,單例類的唯一實例將被建立

懶漢模式#

class LazySingleton {
	private LazySingleton() {
		System.out.println("LazySingleton構造方法執行");
	}

	private static LazySingleton instance = null;

	static LazySingleton getInstance() {
		if (instance == null) {
			instance = new LazySingleton();
		}
		return instance;
	}
}

特點: 它在第一次被引用的時候才會實例化,即在類加載的時候不會將自己實例化。它在第一次調用getInstance()方法的時候實例化,這種技術又稱為延遲加載技術,即在需要的時候才加載實例。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。