1. 程式人生 > >Java筆試題——Singleton單例模式

Java筆試題——Singleton單例模式

Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。

第一種形式定義一個類,它的建構函式為private的,它有一個staticprivate的該類變數,在類初始化時例項話,通過一個publicget方法獲取對它的引用,繼而呼叫其中的方法。

public class Singleton {
	private Singleton() {
	}

	// 在自己內部定義自己一個例項,注意這是private 只供內部呼叫 

	private final static Singleton s = new Singleton();

	// 這裡提供了一個供外部訪問本class的靜態方法,可以直接訪問 
	public static Singleton get() {
		return s;
	}

}

第二種形式

public class Singleton {
	private static Singleton s = null;

	public static synchronized Singleton get() {
		// 這個方法比上面有所改進,不用每次都進行生成物件,只是第一次      
		// 使用時生成例項,提高了效率! 
		if (s == null)
			s = new Singleton();
		return s;
	}
}

其他形式定義一個類,它的建構函式為private的,所有方法為static的。一般認為第一種形式要更加安全些





相關推薦

Java試題——Singleton模式

Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。 第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變

Java試題 實現模式

package com.coderli.interview; /** * 常見面試題:實現單例模式 <br> * 《劍指offer》,第二章,面試題2 <br> * 這裡給出五種寫法和對應的評論 * * @author lihzh * @date 2014年8月12日 上午11:10

java 設計模式 --singleton 模式

Singleton 單例模式:         有些物件只需要一個,比如:執行緒池、快取、對話方塊、處理偏好設定和登錄檔的物件、日誌物件,充當印表機、顯示卡等裝置的驅動程式的物件。         

Java-singleton模式

單執行緒懶漢式 註解:Singleton的靜態屬性instance中,只有instance為null的時候才建立一個例項,建構函式私有,確保每次都只建立一個,避免重複建立。 缺點:只在單執行緒的情況下正常執行,在多執行緒的情況下,就會出問題。例如:當兩個執行緒同時執行到判斷insta

java常見面試題模式

java之單例模式 提起單例模式,相信這是很多面試題中都會出現的一個題,大家也基本瞭解,但是怎麼做才能讓面試官對你刮目相看呢??那麼接下來我們來進行解析單例模式,填充你的知識庫 先說最簡單的單例

Java Singleton 模式思考

在設計模式中,單例模式(Singleton)是最長見得一種設計模式之一。什麼是單例模式呢?就是在整個系統中,只有一個唯一存在的例項。這樣的情況可以幹什麼用呢?比如可以統計網站的訪問量,一些連線池(資料庫連線池等)。 一個最簡單的單例模式 – 餓漢模式 那麼怎麼能保證只有一個物件的存在呢

java反射(java.lang.reflect) ---普通模式唯一性問題

catch 調用 ant 餓漢 urn 方法 -- ace ati 1. 普通的飽漢式、餓漢式 package org.bighead.test2; public class TestPrivate { private String str = "strPrivate

java學習筆記】模式

單例設計模式:某個類在整個系統中只能有一個例項物件可被獲取和使用的程式碼模式。例如:代表JVM執行環境的Runtime類 要點: 一.一個類只能有一個例項:構造器私有化 二.該類必須自己建立這個例項:含有一個該類的靜態變數來儲存這個唯一例項 三.該類必須向整個系統提供這個例項:方式:1.直接暴露2.用

C++設計模式-Singleton模式

Singleton單例模式 Singleton 是對全域性變數的取代策略作用:保證一個類只能有一個例項,並提供一個全域性唯一的訪問點。 僅有一個例項:通過類的靜態成員變數來體現。提供訪問它的全域性訪問點:訪問靜態成員變數的靜態成員函式來體現。 《設計模式》一書中給出了一種很不錯的實現,定義一個單例類,使用類的

Singleton模式實現方法

單例模式原理: 單例模式又叫做 Singleton模式,指的是一個類,在一個JVM裡,只有一個例項存在。 關鍵要實現三點: 1. 構造方法私有化,使得外部無法通過new 得到新的例項 2. 靜態屬

javascript singleton 模式 closure 閉包

* 抽象的單例函式 (通過closure 閉包實現) var singleton = function(fn) { var result; return function() { return result || (result = fn.apply(this,

singleton模式和prototype原型模式

開始學習spring開發了 概念解釋: singleton單例模式:在整個Spring IoC容器中,使用singleton定義的Bean將只有一個例項,該模式是spring預設的模式。 prototype原型模式:每次通過容器的getBean方法獲取prototype

JAVA三種實現模式方法(二):使用靜態內部類實現設計模式

靜態程式碼塊和靜態內部類的載入順序:當呼叫外部類的建構函式是,外部類的靜態程式碼塊同時被載入,但是其內部類不會同時被載入;當且僅當內部類的靜態域或其構造方法或其靜態方法被呼叫時,內部內才被載入。 因此,通過內部內實現單例,就能實現延遲載入。 這個解決方案被稱為Lazy i

Java 利用列舉實現模式

引言 單例模式比較常見的實現方法有懶漢模式,DCL模式公有靜態成員等,從Java 1.5版本起,單元素列舉實現單例模式成為最佳的方法。 Java列舉 基本用法 列舉的用法比較多,本文主要旨在介紹利用列舉實現單例模式的原理,所以這裡也主要介紹一

Java中列舉實現模式

public enum Singleton { INSTANCE; private SingletonClass instance; Singleton() { this.instance = new Singleto

Java多執行緒-----模式在多執行緒中的使用用問題

   1.餓漢模式(立即載入模式)與多執行緒 不管需不需要用到例項都要去建立例項,即在類產生的時候就建立好例項 package com.thread; /** * 餓漢模式 * * @author yyx 2018年12月28日 */ public cl

Singleton模式C++

單例模式好幾種 此處參考如下兩人學習;https://blog.csdn.net/cjbct/article/details/79266057                     &nbs

Java多執行緒--模式的五種實現

一、惡漢模式 在這個類還沒有使用到的時候就已經建立好了 public class Singleton{ /** *類變數在類準備階段就初始化了然後放在<clinit>構造方法中, *一旦外部呼叫了靜態方法

設計模式例項(Lua)筆記之三(Singleton模式

1.描述: 這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單一、獨苗的意思,那什麼是獨一份呢?你的思維是獨一份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件:皇帝。    中國的歷史上很少出現兩個皇帝並存的時期,是有

java 多執行緒 模式

單例模式: 單例模式是指在程式執行過程中,某個類在記憶體中只有一個物件,即讓一個類只能建立一個物件,所以單例模式不能用new關鍵字建立 單例模式一般分為兩種情況,餓漢式和懶漢式 建立單例模式的步驟: 1構造方法私有化private,保證外部訪問不到構造方法,否則可以建