iT邦幫忙

2021 iThome 鐵人賽

DAY 8
1
Software Development

淺談物件導向與Design Pattern介紹系列 第 8

IT鐵人DAY 8-Singleton 單例模式

Design Pattern大致分成三種模式:

  • Creational Patterns(創建型模式)
  • Structural Patterns(結構型模式)
  • Behavioral Patterns(行為型模式)

  今天要講的是創建模式中的其中一種Pattern,Singleton單例模式。


問題情境

  當我們程式對某些共享資源做存取的動作的時候,像是資料庫,我們就會去控制這個類別就只能有一個實例,避免一些不必要的資源浪費。

  假設今天你創建了一個物件,過了一段時間以後又再創了一個新的物件,但因為之前已經又創過了這個物件,所以存取的物件會是已經創好的物件,而不是新創的物件。

  上面這段話看起來很饒舌,但仔細思考以後,就會了解它的細膩之處了!

Class Diagram

https://ithelp.ithome.com.tw/upload/images/20210923/201407434zQFRNeQ1B.png

Skeleton Code

class Singleton {
		private static Singleton instance;

		private Singleton();

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

  當需要創建Singleton物件的時候,就必須改成用getInstance()的方法來將類別實例化,確保此一類別只有一個實例,而不是用原本Singleton的建構子去創建。這樣一來Singleton這個物件只會在第一次的呼叫方法的時候才被初始化。


除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章

lu23770127 - SASS 基礎初學三十天

10u1 - 糟了!是世界奇觀!

juck30808 - Python - 數位行銷分析與 Youtube API 教學

SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?


上一篇
IT鐵人DAY 7-Class Diagram類別圖
下一篇
IT鐵人DAY 9-Factory Method 工廠方法
系列文
淺談物件導向與Design Pattern介紹30

尚未有邦友留言

立即登入留言