簡單工廠模式(****** factory pattern)是指有乙個工廠物件決定建立出哪一種產品類的例項,不屬於23種設計模式。
簡單工廠是產品的工廠
簡單工廠模式適用於工廠類建立的物件較少的場景,且客戶端只需要傳入工廠引數,對如何建立物件的邏輯不需要關心。
工廠類的職責相對過重,增加新的產品時需要修改工廠類的判斷邏輯,違背了開閉原則。
不易於擴充套件過於複雜的產品結構。
支付介面規範:
public
inte***ce
ipay
具體實現:
public
class
alipay
implements
ipay
}public
class
wxpay
implements
ipay
}public
class
bankpay
implements
ipay
}
工廠:
public
class
payfactory
}catch
(exception e)
return null;
}}
測試:
public
class
test
}
工廠方法模式(factory method pattern)是指定義乙個建立愛你物件的介面,但讓視線這個介面的類來決定例項化哪個類,工廠方法讓類的例項化推遲到子類中進行。
屬於建立型設計模式。
解決產品擴充套件問題。簡單工廠模式的公升級版本。
工廠方法是工廠的工廠
建立物件需要大量重複的**。
客戶端(應用層)不依賴於產品類例項如何被建立、實現等細節。
乙個類通過其子類來制定建立哪個物件。
使用者只需要關心所需產品對應的工廠,無需關心建立細節。
加入新產品符合開閉原則,提高了系統的可擴充套件性。
類個數容易過多,增加了**結構的複雜度。
增加了系統的抽象性和理解難度。
具體實現:
public
class
alipay
implements
ipay
}public
class
wxpay
implements
ipay
}public
class
bankpay
implements
ipay
}
工廠方法:
public
inte***ce
ipayfactory
具體例項工廠:
public
class
alipayfactory
implements
ipayfactory
}public
class
wxpayfactory
implements
ipayfactory
}public
class
bankpayfactory
implements
ipayfactory
}
測試:
public
class
test
}
抽象工廠模式(abastract factory pattern)是指提供乙個建立一系列相關或相互依賴物件的介面,無需指定他們具體的類。
屬於建立型設計模式。
產品等級結構與產品族
**產品等級:**相同的產品標準(即同乙個繼承體系),不同的特徵區別。
客戶端(應用層)不依賴與產品類例項如何被建立、實現等細節。
強調一系列相關的產品物件(屬於同一產品族)一起使用建立物件。需要大量重複的**。
提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於具體實現。
具體產品在應用層**隔離,無需關心建立細節
將乙個系列的產品族統一到一起建立
規定了所有可能被建立的產品集合,產品族中擴充套件新的產品困難難,需要修改抽象工廠的 介面。
增加了系統的抽象性和理解難度。
資料連線池就是乙個經典的工廠模式
支付和收款介面規範:
public
inte***ce
ipay
public
inte***ce
icollect
具體實現:
public
class
alipay
implements
ipay
}public
class
wxpay
implements
ipay
}public
class
alicollect
implements
icollect
}public
class
wxcollect
implements
icollect
}
抽象工廠:
public
abstract
class
factory
public
abstract ipaay createpay()
;public
abstract icollect createcollect()
;}
工廠實現:
public
class
alifactory
extends
factory
@override
public icollect createcollect()
}public
class
wxfactory
extends
factory
@override
public icollect createcollect()
}
測試:
public
class
test
}
簡單工廠:產品的工廠
工廠方法:工廠的工廠
抽象工廠:複雜產品的工廠,更關心的使產品族
spring中的應用:
abastractfactory
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...