設計模式之工廠模式

2021-08-17 18:06:31 字數 2620 閱讀 2482

簡單工廠模式是由乙個工廠物件根據收到的引數決定要建立哪乙個類的物件例項。

工廠類負責建立的物件比較少,客戶只需要傳入工廠類引數,對於如何建立物件(邏輯)不關心。簡單工廠模式很容易違反高內聚低耦合的原則,因此一般只在很簡單的情況下使用。

最大的優點在於工廠類中包含了必要的邏輯,根據客戶需要的邏輯動態例項化相關的類。

public inte***ce shape
public class circle implements shape   

}

public class rectangle implements shape   

}

public class square implements shape   

}

public class shapefactory  else if ("rectangle".equals(type))  else if ("square".equals(type))  else   

} }

public class factorypatterndemo   

}

定義乙個建立物件的工廠介面,讓子類決定例項化哪乙個類,將實際建立工作推遲到子類當中。

1、日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠端伺服器等,使用者可以選擇記錄日誌到什麼地方。 2、資料庫訪問,當使用者不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。 3、設計乙個連線伺服器的框架,需要三個協議,」pop3」、」imap」、」http」,可以把這三個作為產品類,共同實現乙個介面。

建立物件的介面,讓子類決定具體例項化的物件,把簡單的內部邏輯判斷移到了客戶端。工廠方法模式克服了簡單工廠所違背的開閉原則的缺點,又保持了封裝物件建立過程的優點。擴充套件性高,想要增加乙個產品,只要擴充套件乙個工廠類就可以。

public inte***ce shapefactory
public class circlefactory implements shapefactory   

}

public class rectanglefactory implements shapefactory   

}

public class squarefactory implements shapefactory   

}

public class factorymethoddemo   

}

抽象工廠是圍繞乙個超級工廠建立其他工廠,該超級工廠又稱為其他工廠的工廠。提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類。

系統的產品多於乙個產品族,而系統只消費某一族的產品。

當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。

public inte***ce button
public inte***ce text
public class linuxbutton implements button   

}

public class windowsbutton implements button   

}

public class linuxtext implements text   

}

public class windowstext implements text   

}

public inte***ce abstractfactory
public class linuxfactory implements abstractfactory   

@override

public text createtext()

}

public class windowsfactory implements abstractfactory   

@override

public text createtext()

}

public class abstractfactorydemo   

}

無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬於工廠模式,在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底是簡單工廠方法模式還是抽象工廠模式,因為他們之間的演變常常是令人琢磨不透的。經常你會發現,明明使用的工廠方法模式,當新需求來臨,稍加修改,加入了乙個新方法後,由於類中的產品構成了不同等級結構中的產品族,它就變成抽象工廠模式了;而對於抽象工廠模式,當減少乙個方法使的提供的產品不再構成產品族之後,它就演變成了工廠方法模式。

所以,在使用工廠模式時,只需要關心降低耦合度的目的是否達到了。

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

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

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...