設計模式之工廠模式

2021-10-05 06:24:42 字數 3783 閱讀 9354

簡單工廠模式(****** 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...