單例模式和工廠模式

2021-09-23 22:31:34 字數 2240 閱讀 1876

實現思路:將構造方法私有化  宣告本類型別的靜態私有屬性   提供共有靜態方法獲取 本類物件 

class ***

static *** x=new ***();

public static *** get***()

}

class ***

static *** x = null;

public static *** get***()

}

優點:

缺點:**:

//產品介面

public inte***ce produceinte***ce

//產品類——1

public class produceclass_1 implements produceinte***ce

}//產品類——2

public class produceclass_2 implements produceinte***ce

}//工廠類

public class factoty_1

}}//測試**

public class test_1

}

優點:通過工廠對產品進行加工和生產   對細節進行隱藏 

缺點:如果需要生產新的產品 需要修改原始碼  **耦合度高  不符合開閉原則 

**:

沿用上面的產品類

//工廠藉口

public inte***ce factoryinte***ce

//工廠類——1

public class factoryclass_1 implements factoryinte***ce

}//工廠類-2

public class factoryclass_2 implements factoryinte***ce

}//測試類

public class test

}

優點(和簡單工廠比改善的地方):可擴充套件性變好了  需要增加產品時 不需要修改原始碼  只需要通過實現工廠介面去新增工廠類 符合設計原則中的開閉原則  同時又保持了對物件建立過程的封裝

缺點:增加一種產品就需要增加一種工廠 增加了開發時間成本

**:  

//產品介面

public inte***ce electrickettle

//具體產品類----1

public class electrickettleclass_1 implements electrickettle

}//具體產品類-------2

public class electrickettleclass_2 implements electrickettle

}//抽象工廠介面

public inte***ce factoryinte***cer

//具體工廠--------1

package com.briup.base.factory._3;

public class _1factory implements factoryinte***cer

@override

public electrickettle createkettle()

@override

public refrigerator createrefrigerator()

}//具體工廠----------2

package com.briup.base.factory._3;

public class _2factory implements factoryinte***cer

@override

public electrickettle createkettle()

@override

public refrigerator createrefrigerator()

}//客戶端**

package com.briup.base.factory._3;

public class client

}

優點:和工廠方法相比 減少了工廠類的個數  出現類產品組的概念    同乙個工廠類中生產的產品屬於乙個產品組 (同一品牌下               的不同商品)

缺點:介面中的方法變多了  介面的隔離性自然也就變低了  實現介面後必須重寫其中的所有方法 介面變得笨重 增加了類與類間            耦合度 

單例模式 工廠模式

單例模式 一 什麼是單例模式 有時候我們會遇到這樣一種情況,乙個類只能有乙個物件被例項化,這時我們就可以使用單例模式了。單例模式通過類本身來管理其唯一例項。在設計這個類的時候,讓他只能建立乙個例項並提供對此例項的全域性訪問。因此單例模式有兩個最基本的條件是,確保乙個類只有乙個例項被建立,提供乙個對例...

工廠模式 單例模式

一.單例模式介紹 單例類只能有乙個例項。單例類必須自己建立自己的唯一例項。單例類必須給所有其他物件提供這一例項。二.單例模式分為 4 雙重檢驗 這是最優的執行緒安全 即使用於單執行緒又適用於多執行緒 第乙個進來的時候,判斷為空,然後加鎖,繼續判斷為空,如果開闢了空間之後,還沒有去賦值,這時候有其他執...

單例模式 工廠模式

單例 package com.enorth.user public class singleton public static singleton getinstance return singleton 簡單工廠 產品介面 public inte ce product 具體產品a public c...