1. 程式人生 > 其它 >Filter過濾器的作用

Filter過濾器的作用

技術標籤:設計模式設計模式

設計模式之單例模式

單例模式:某個類只能有一個例項,提供一個全域性的訪問點

單例模式具有的3個特點:

  1. 只有一個例項
  2. 自我例項化
  3. 提供全域性訪問點

單例模式的優缺點

優點:節約系統資源、提高了系統效率,同時也能夠嚴格控制客戶對它的訪問。
缺點:也許就是因為系統中只有一個例項,這樣就導致了單例類的職責過重,違背了“單一職責原則”,同時也沒有抽象類,所以擴充套件起來有一定的困難。

單例模式的運用場景

對於 Java 來說,單例模式可以保證在一個 JVM 中只存在單一例項。單例模式的應用場景主要有以下幾個方面。

  1. 需要頻繁建立的一些類,使用單例可以降低系統的記憶體壓力,減少 GC。
  2. 某個類只要求生成一個物件的時候
  3. 某類需要頻繁例項化,而建立的物件又頻繁被銷燬的時候,如多執行緒的執行緒池、網路連線池等
  4. 頻繁訪問資料庫或檔案的物件。

單例模式的實現方法

  1. 懶漢式(特點是類載入時沒有生成單例,只有當第一次呼叫 getlnstance 方法時才去建立這個單例)
public class LazySingleton {

	 //保證 instance 在所有執行緒中同步
    private static volatile LazySingleton instance = null;   
	
	//private 避免類在外部被例項化
    private LazySingleton()
{ } public static synchronized LazySingleton getInstance() { //getInstance 方法前加同步 if (instance == null) { instance = new LazySingleton(); } return instance; } }
  1. 餓漢式(該特點是類一旦載入就建立一個單例,保證在呼叫 getInstance 方法之前單例已經存在了)
    public class HungrySingleton
{ //在類建立的同時就已經建立好一個靜態的物件供系統使用,以後不再改變,所以是執行緒安全的,可以直接用於多執行緒而不會出現問題 private static final HungrySingleton instance = new HungrySingleton(); private HungrySingleton() {} public static HungrySingleton getInstance() { return instance; } }