程式設計之 單例模式 深入研究

2022-09-23 09:33:08 字數 1086 閱讀 7327

一、問題的引出

目的:設計乙個加密的工具類。

寫法一:【單例模式】

public class cipherutils

public static boolean initinstance(string... args)

public static cipherutils getinstance()

// 正在用到的加密方法

public string docipher(string... args)

} 》呼叫方法:

cipherutils cu= cipherutils.getinstance();

cu.docipher(...);  

寫法二:【靜態方法模式】  

public class cipherutils

// 比較複雜的初始化key的過程

public static void initkey(string... args)

}》呼叫方法:cipherutils.docipher(...);  

注意以上例子,只是乙個模擬,真實情況 類的屬性可能不止乙個,可能有三個以上屬性。  

寫法一的特點:

1、使用時調的方法都是非static的(docipher等等)

2、類的屬性都是非static的。

3、擁有單例模式的所有優點。

寫法二的優點:

1、屬性和方法都是static的。

2、static是全域性共享的,所以也擁有單例模式的核心優點。  

另外,還注意到一點,單例模式 有乙個比 靜態方法模式 更好的地方:

它可以被繼承,方法可以被子類過載,所以擴充套件性更強。

例如乙個子類subcipher過載了docipher方法,那麼呼叫方式如下:

cipherutils cu= subcipher.getinstance();

cu.docipher(...);

注意到,呼叫處(第二行)是無需修改**的。但是如果是靜態方法的話,只能重新命名乙個方法了,而且呼叫出還要改**,比如:

cipherutils.docipher_02(...);  

二、問題的研究

深入研究雲計算模式

深入研究雲計算模式 上次我寫了篇 初識雲作業系統 的文章。這次我將著重介紹如何進行雲計算,以及雲計算所涉及的方方面面的知識。當然,這都是我按我自己的了解到的知識再加上自己的創造而寫的,並不算是什麼權威的東西。可以認為是我自己的一些感想!雲計算,即分布式計算 網格計算的衍生物。在本地計算資源不足的情況...

深入研究自監督單目深度估計 Monodepth2

單目深度估計模型monodepth2對應的 為digging into self supervised monocular depth estimation,由倫敦大學學院提出,這篇 的研究目標是從單目rgb影象中恢復出對應的深度,由圖1所示 該網路可以從單目影象中恢復對應的深度,圖中不同顏色代表不...

程式設計模式 單例模式

由於例項化是在初始化階段執行的,所以沒有執行緒安全的問題,但是潛在問題在於no local static物件 函式外的static物件 在不同編譯單元 可理解為cpp檔案和其包含的標頭檔案 中的初始化順序是未定義的。如果在初始化完成之前呼叫 instance 方法會返回乙個未定義的例項。例如有兩個單...