
抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創(chuàng)建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。在抽象工廠模式中,接口是負責創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供對象。


IDepartment:用于客戶端訪問,解除具體數(shù)據(jù)庫訪問的耦合。

SqlserverDepartment:用于SQLServer訪問的Department。

AccessDepartment:用于訪問Access的Department。

IFactory:定義一個創(chuàng)建訪問User表對象的抽象工廠接口。

SqlServerFactory:實現(xiàn)IFactory接口,實例化SQLServerUser和SQLServerDepartment。

AccessFactory:實現(xiàn)IFactory接口,實例化AccessUser和AccessDepartment。
抽象模式的應(yīng)用:抽象工廠模式將具體產(chǎn)品的創(chuàng)建延遲到具體工廠的子類中,這樣將對象的創(chuàng)建封裝起來,可以減少客戶端與具體產(chǎn)品類之間的依賴,從而使系統(tǒng)耦合度低,這樣更有利于后期的維護和擴展,這真是抽象工廠模式的優(yōu)點所在,然后抽象模式同時也存在不足的地方。一個產(chǎn)品族中的多個對象設(shè)計成一起工作,它能保證客戶端始終只使用一個產(chǎn)品族中的對象。這對一些需要根據(jù)當前環(huán)境來決定其行為的軟件系統(tǒng)來說是非常實用的一種設(shè)計模式。
抽象模式的優(yōu)點:有利于更換產(chǎn)品系列,由于客戶端只依賴于抽象類,更換產(chǎn)品系列時,只需要更改一下具體工廠名就可以。
抽象模式的缺點:難以支持新種類的產(chǎn)品,這是因為抽象工廠接口確定了可以被創(chuàng)建的產(chǎn)品集合,支持新種類的產(chǎn)品就需要擴展該工廠接口,這將引起抽象工廠類及其所有子類的改變。