1. 程式人生 > >兩種設計模式(單例 簡單工廠)

兩種設計模式(單例 簡單工廠)


一.設計模式

1.什麼是設計模式

2.為什麼用設計模式

3.什麼時候使用設計模式

4.怎樣用設計模式

二.單例模式

1.單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。

通過單例模式可以保證系統中,應用該模式的類一個類只有一個例項。即一個類只有一個物件例項。

優點

一、例項控制 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。 二、靈活性 因為類控制了例項化過程,所以類可以靈活更改例項化過程。

缺點

一、開銷 雖然數量很少,但如果每次物件請求引用時都要檢查是否存在類的例項,將仍然需要一些開銷。可以通過使用靜態初始化解決此問題。 二、可能的開發混淆 使用單例物件(尤其在類庫中定義的物件)時,開發人員必須記住自己不能使用new關鍵字例項化物件。因為可能無法訪問庫原始碼,因此應用程式開發人員可能會意外發現自己無法直接例項化此類。 三、物件生存期 不能解決刪除單個物件的問題。在提供記憶體管理的語言中(例如基於.NET Framework的語言),只有單例類能夠導致例項被取消分配,因為它包含對該例項的私有引用。在某些語言中(如 C++),其他類可以刪除物件例項,但這樣會導致單例類中出現懸浮引用。。

2.如何保證一個類有一個例項:

1)將公有無參構造改成私有

  private Play(){}

2)寫一個 私有的 靜態的 類型別的 成員變數

   private static Play play=null;

3)寫一個公有的 靜態的 返回值為 類型別的 方法

複製程式碼
public static Play GetInstance()

{

     if(play==null)
    {    
    paly=new Play();
      }
    return play;

} 
複製程式碼


三.簡單工廠模式

1.

簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。  

簡單工廠模式優缺點

編輯

優點

工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責“消費”物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體系結構的優化。

缺點

由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了一個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。

當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同例項的需求.這種對條件的判斷和對具體產品型別的判斷交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利;

這些缺點在工廠方法模式中得到了一定的克服。

使用場景

工廠類負責建立的物件比較少;

客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心;

由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用