定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法
優點:簡單易於實現,把類的例項化交給工廠,易於解耦。
缺點:違反了ocp開閉原則。
案例:jdk日期格式化dateformat,jdk金鑰生成器keygenerator
public
class
factory
else
if(type.
equalsignorecase
("xiaomi"))
return phone;
}public
static
void
main
(string[
] args)
}
在工廠方法模式中,不再提供乙個統一的工廠類來建立所有的產品物件,而是針對不同的產品提供不同的工廠,系統提供乙個與產品等級結構對應的工廠等級結構
優點:將具體建立工作交給子類去做,可以允許系統在不修改工廠角色的情況下引進新產品
缺點:新增新產品時,要寫新的產品類,還要提供對應的具體工廠類,系統中類的個數將成對增加
案例:jdbc工廠、log日誌記錄器
inte***ce
factory
public
class
huaweiphonefactory
implements
factory
}public
class
xiaomiphonefactory
implements
factory
}public
class
test
}
抽象工廠模式為建立一組物件提供了一種解決方案。與工廠方法模式相比,抽象工廠模式中的具體工廠不只是建立一種產品,它負責建立一族產品
優點:隔離了具體類的生成,可以實現高內聚低耦合的設計目的,符合「開閉原則」
缺點:開閉原則的傾斜性(增加新的工廠和產品族容易,增加新的產品等級結構麻煩)
public
abstract
class
abstractfactory
public
class
concretefactory1
extends
abstractfactory
public abstractproductb createproductb()
}public
class
concretefactory2
extends
abstractfactory
public abstractproductb createproductb()
}
簡單工廠 工廠方法 抽象工廠的區別
先看一下目錄結構 再說一下大致的邏輯,首先建立乙個起始介面,iuser,之後出現乙個使用者需要去實現這個使用者介面,按照以往的建立邏輯,每次乙個使用者進行一次new,工廠意味著自己不需要去在乎他的建立邏輯,不需要知道怎麼建立,只需要給定乙個約束值,通過這個約束值我就知道如何去建立自己想要的某個物件,...
簡單工廠,工廠方法,抽象工廠
簡單工廠,工廠方法,抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽取了出來,優化了系統的架構,並且增強了系統的擴充套件性。本文是本人對這三種模式學習後的乙個小結以及對他們之間的區別的理解。簡單工廠 簡單工廠模式的工廠類一般是使用靜態方法,通過接收的引數的不同來返回不...
簡單工廠 工廠方法 抽象工廠
簡單工廠 乙個工廠類 根據傳入的參量決定建立出哪一種產品類的例項 直接乙個工廠類,內部通過 swith operator add類實現該介面 adddao implements dao dao的實現類 客戶端 dao dao new adddao dao.createoper 產生物件 這樣如果需要...