天天看點

設計模式之簡單工廠

簡單工廠模式,百度百科中對它介紹的挺詳細, 也很容易了解。我先把百度百科的内容複制一下。

簡單工廠模式是屬于建立型模式,又叫做靜态工廠方法(static factory method)模式,但不屬于23種gof設計模式之一。簡單工廠模式是由一個工廠對象決定建立出哪一種産品類的執行個體。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以了解為是不同工廠模式的一個特殊實作。

uml類圖

設計模式之簡單工廠

簡單工廠模式的實質是由一個工廠類根據傳入的參數,動态決定應該建立哪一個産品類(這些産品類繼承自一個父類或接口)的執行個體。

該模式中包含的角色及其職責

工廠(creator)角色

簡單工廠模式的核心,它負責實作建立所有執行個體的内部邏輯。工廠類的建立産品類的方法可以被外界直接調用,建立所需的産品對象。

抽象産品(product)角色

簡單工廠模式所建立的所有對象的父類,它負責描述所有執行個體所共有的公共接口。

具體産品(concrete product)角色

是簡單工廠模式的建立目标,所有建立的對象都是充當這個角色的某個具體類的執行個體。

缺點

由于工廠類集中了所有執行個體的建立邏輯,違反了高内聚責任配置設定原則,将全部建立邏輯集中到了一個工廠類中;它所能建立的類隻能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。

當系統中的具體産品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同執行個體的需求.這種對條件的判斷和對具體産品類型的判斷交錯在一起,很難避免子產品功能的蔓延,對系統的維護和擴充非常不利;這些缺點在工廠方法模式中得到了一定的克服。

使用場景

工廠類負責建立的對象比較少;

客戶隻知道傳入工廠類的參數,對于如何建立對象(邏輯)不關心;

由于簡單工廠很容易違反高内聚責任配置設定原則,是以一般隻在很簡單的情況下應用

代碼實作:

1.建立接口

2.建立寶馬、奔馳對象實作接口

3.建立工廠根據參數傳回不同的對象

4.調用工廠方法

設計模式之簡單工廠

繼續閱讀