一、問題的引出
目的:設計乙個加密的工具類。
寫法一:【單例模式】
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 方法會返回乙個未定義的例項。例如有兩個單...