迭代器模式:提供一種,順序訪問乙個聚合物件中各個元素,而又不暴漏該物件的內部表示。
當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮使用迭代器模式,你需要對聚集有多種方式便利時,可以考慮使用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一的介面。
當你需要對聚集有多種遍歷方式遍歷時,可以考慮使用迭代器模式。迭代器模式就是分離了集合物件的便利行為,抽象乙個迭代器類負責,這樣即可以做到不暴露集合的內部結構,又可以讓外部**透明的訪問集合內部的資料。
單例模式:保證乙個類僅有乙個例項,並提供乙個訪問他的全域性訪問點。
通常我們可以讓乙個全域性變數使得物件被訪問,但他不能防止你例項化多個物件。乙個最好的辦法就是,讓類自身負責儲存他的唯一例項,這個類可以保證沒有其他例項可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問該例項的方法。
單例模式因為singleton類封裝他的唯一例項,這樣它可以嚴格的控制客戶怎樣訪問它以及何時訪問它。簡單地說就是對唯一例項的受控訪問。
多執行緒時的單例:
lock是確保當乙個執行緒位於**的臨界區時,另乙個執行緒不進入臨界區。如果其他執行緒試圖進入鎖定的**,則它將一直等待(即被阻止),直到該物件被釋放。
c#與公共語言執行庫也提供了一種『靜態初始化』方法,這種方法不需要開發人員顯示的編寫執行緒安全**,即可解決多執行緒環境下它是不安全的問題。
這種靜態初始化的方式是在自己被載入時就將自己自己例項化,所以被形象的稱之為餓漢式單例類,原先單例模式處理方式是要在第一次被引用時,才會將自己例項化,所以就被稱為懶漢式單例類
設計模式 單例模式與迭代器模式的思考
單例模式 1.定義乙個私有的建構函式。2.定義乙個私有的靜態例項。3.定義乙個共有的靜態函式,用於返回這個類的唯一例項。如下 using system using system.collections.generic using system.linq using system.text priva...
單例模式 單例模式
餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...
懶漢單例模式 和 餓漢單例模式
單例模式 是一種常用的軟體設計模式,在它的核心結構中值包含乙個被稱為單例的特殊類。乙個類只有乙個例項,即乙個類只有乙個物件例項。餓漢單例模式 public class singletondemo5 private singletondemo5 public static final singleto...