1. 程式人生 > >Java技術_每天掌握一種設計模式(002)_使用場景及簡單例項(建立型:單例模式)

Java技術_每天掌握一種設計模式(002)_使用場景及簡單例項(建立型:單例模式)

1.模式描述

一個類有且僅有一個例項,並且自行例項化並向整個系統提供。

2.模式作用

保證某個類在系統中只有一個例項物件,對於特殊需求來說非常必要。
限制了例項個數有利於GC的回收。

等等。//TODO

3.適用場景

一個類有且只能有一個例項的時候

等等。//TODO

例如:網站計數器、windows系統的工作管理員

4.模式要素

該類只能有一個例項。該類提供一個該類的私有靜態物件。
該類自行建立這個例項該類只提供私有構造方法。
該類自行對外提供這個例項。該類提供公用方法來建立或獲取這個私有靜態物件。

5.類圖


6.模式例項程式碼

單例:

package com.demoFound.singleton;

/**
 * 單例模式
 * 
 * @author popkidorc
 * 
 */
public class MySingleton {

	// 私有靜態例項
	private static MySingleton newInstance = null;

	// 私有構造方法
	private MySingleton() {
	}

	// 對外的公用訪問點,用來建立或獲取例項
	public static synchronized MySingleton getInstance() {
		if (newInstance == null) {
			newInstance = new MySingleton();
		}
		return newInstance;
	}
}


消費者:

/**
 * 單例模式_消費者類
 * 
 * @author popkidorc
 * 
 */
public class MySingletonMain {

	public static void main(String[] args) {
		System.out.println("1." + MySingleton.getInstance());
		System.out.println("2." + MySingleton.getInstance());
		System.out.println("3." + MySingleton.getInstance());// 均是同一個物件,在同一個記憶體中
	}
}