一.單列模式
1)首先,該singleton的建構函式必須是私有的,以保證客戶程式不會通過new()操作產生乙個例項,達到實現單例的目的;
2)因為靜態變數的生命週期跟整個應用程式的生命週期是一樣的,所以可以定義乙個私有的靜態全域性變數instance來儲存該類的唯一例項;
3)必須提供乙個全域性函式訪問獲得該例項,並且在該函式提供控制例項數量的功能,即通過if語句判斷instance是否已被例項化,如果沒有則可以同new()建立乙個例項;否則,直接向客戶返回乙個例項。
在這種經典模式下,沒有考慮執行緒併發獲取例項問題,即可能出現兩個執行緒同時獲取instance例項,且此時其為null時,就會出現兩個執行緒分別建立了instance,違反了單例規則。因此,需對上面**修改。
二.操作xml方法
三.簡單工廠模式
簡單工廠的優點只要如下:
①實現了物件的建立和使用職責的分離
②客戶端無須知道具體的類名,只需要使用就行,也在一定程度上減輕了複雜物件名稱的記憶量。
③通過引入配置檔案,可以在不修改客戶端**的情況下更換和增加新的具體類,提高了靈活性。
簡單工廠的缺點如下:
①工廠集中了所有具體類的建立工作,職責過重,一旦丟擲異常,整個系統會受到影響。
②使用簡單工廠模式勢必會增加系統種類的個數,也就增加了系統的複雜度和理解難度。
③系統擴充套件困難,一旦要增加新的具體類,就不得不修改工廠類的邏輯,在產品型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。
④簡單工廠模式由於使用了靜態的方法,造成工廠角色無法形成基於繼承的等級結構,在c#語言中,類的例項沒有辦法訪問靜態方法和靜態的變數,無法在客戶端**中針對工廠父類程式設計,二在執行時使用工廠子類來覆蓋父類,因此,工廠類不能得到很好的擴充套件。
簡單工廠的使用環境:
①工廠類負責建立的物件比較少,由於建立的物件比較少,所以不會造成邏輯過於複雜。
②客戶端只知道傳入工廠類的引數,對於如何建立物件並不關心。
終於理解單列模式了,單列模式和多執行緒
1 單例類確保自己只有乙個例項 構造方法私有化 2 單例類必須自己建立自己的例項。3 單例類必須為其他物件提供唯一的例項。package singleton 懶漢式 單例例項在第一次被使用時構建,延遲初始化。public class singleton return sing public void...
C 簡單工廠模式和單列設計模式潛要解析
簡單工廠設計模式,又叫做靜態工廠方法 static factory method 模式,就是由乙個工廠類根據傳入的參量決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式。簡單工廠設計模式是針對於建立類的物件的。一般,簡單工廠涉及到三個 角色 類 一 工廠類 工廠類是簡單工廠的...
簡單工廠和方法模式
1.目的 這兩個模式的目的是生產產品,也就是new物件,由工廠new物件,減輕了客戶端new物件的複雜度,達到低耦合,高內聚 2.涉及的介面和類 兩個介面 產品介面和工廠介面 兩組實現類 產品的實現類和工廠的實現類 3.eg 簡單工廠 car介面benz實現類 byd實現類 easyfactory介...