常見的設計模式之工廠模式和單例模式

2021-08-28 07:07:51 字數 1621 閱讀 4172

工廠方法模式有兩個抽象類,乙個是產品抽象類,乙個是工廠抽象類,若干個具體產品類和對應的具體工廠類,具體產品抽象類與產品抽象類是實現關係,與具體工廠類是依賴關係,具體工廠類與抽象工廠類是實現關係。

客戶端**如下

工廠模式是定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化,工廠方法模式使乙個類的例項化延遲到其子類。

(工廠模式要寫的模擬較多,而且無法解決產品族的問題)

抽象工廠的具體工廠不是只是建立一種產品,而是負責建立一族產品。

抽象工廠的結構包括

1,抽象工廠

2,具體工廠

3,抽象產品

4,具體產品

可以解決不同產品族的不同產品的問題。例如a公司的電視,電腦和b公司的電視電腦,有乙個相同的抽象工廠。然後建立a公司和b公司的具體工廠,建立電視和電腦的抽象產品類,延伸出a公司的電視電腦,b公司的電視電腦,a公司的具體工廠類建立a公司的具體產品,b公司建立b公司的具體產品。

例如

客戶端**:

class client

}

確保乙個類只有乙個例項,並提供乙個全域性訪問點來訪問這個唯一例項。

私有構造方法,確保其他使用者無法用new建立,模式中包含乙個靜態的私有成員變數和靜態的公有的工廠方法,該工廠方法負責檢驗例項的存在性並例項化自己,然後儲存在靜態成員變數中,以確保只有乙個例項被建立。

public class singleton

//靜態公有工廠方法,返回唯一例項

public static singleton getinstance()

}

單例模式分為餓漢模式和懶漢模式

餓漢模式:在自己被家在的時候就將自己初始化。

懶漢模式:在呼叫的時候才將自己初始化。

餓漢式單例與懶漢式單例模擬較

餓漢式單例類在自己被載入時就將自己例項化。單從資源利用效率角度來講,這個比懶漢式單例類稍差些。從速度和反應時間角度來講,則比懶漢式單例類稍好些。

懶漢式單例類在例項化時,必須處理好在多個執行緒同時首次引用此類時的訪問限制問題,特別是當單例類作為資源控制器,在例項化時必然涉及資源初始化,而資源初始化很有可能耗費大量時間,這意味著出現多執行緒同時首次引用此類的機率變得較大,需要通過同步化機制進行控制

設計模式 工廠模式和單例模式

在平常實用類的時候,往往要進行類功能的擴充套件,如果直接在裡面進行擴充套件,有可能會對類裡面的其他功能產生影響,所以在擴充套件功能的時候就要重新寫類,這就要採用繼承的方式,如 1 class yunsuan 2 8 9class jia extends yunsuan 造乙個加的子類繼承父類 10 ...

設計模式之簡單工廠和單例模式

1.單例模式 重點就是下面三句話 1.將建構函式私有化 2.提供乙個靜態方法,返回乙個物件 3.建立乙個單例 1建構函式私有化 private form2 2.提供乙個靜態方法,返回乙個物件 3.建立乙個單例 public static form2 f2 null public static for...

常見設計模式之 單例模式

遇到類似的問題 生產編號的產生,售票系統等資料需要同步,馬上想到單例模式.例子 package singleton description 單例模式 author potter date 2012 8 14 下午10 08 16 version v1.0 public static void mai...