工廠設計模式與普通的繼承跟本區別在於工廠設計模式中的功能方法會用到沒有實現的抽象方法所返回的結果,在工廠方法模式裡面,客戶端要麼使用creator物件,要麼使用creator建立的物件,一般客戶端不直接使用工廠方法
工廠方法模式和ioc/di的思想是相似的,都是「主動變被動」,進行了「主從換位」,從而獲得了更靈活的程式結構。只是在被動獲取資源的方式上不同,ioc/di是通過set的方式注入,而工廠方法模式則延遲到子類實現時區提供資源。
1:簡單工廠(****** factory)。
又叫靜態工廠,主要有乙個靜態方法,用來接受引數,並根據引數來決定返回[b]實現同一介面的不同類的例項[/b]。比較難擴充套件,如果要新增乙個新的產品必須要修改靜態工廠類,新增新的判斷邏輯
2:工廠方法(factory method)。
工廠方法為工廠類定義了介面,用多型來削弱了工廠類的職能
public inte***ce factory
public class afactory implements factory
} public class bfactory implements factory
}
簡單工廠是把建立產品的職能都放在乙個類裡面,而工廠方法則把不同的產品放在實現了工廠介面的不同工廠類裡面,以後增加新產品,只需要新增乙個實現工廠介面工廠類,就能達到,不用修改已有的**
3:抽象工廠(abstract factory)。
意圖在於建立一系列互相關聯或互相依賴的物件
一系列介面,且每個介面有一系列的實現,這樣每個工廠生產一系列的產品,比如有a b c 三個介面(冰箱,洗衣機,空調),然後每個介面有一系列實現,比如a有a1,a2,a3,乙個工廠可以生產a1,b1,c1這樣一套產品(海爾冰箱,海爾洗衣機,海爾空調).
// dao工廠
abstract class daofactory catch (exception e)
return dao;
}
abstract iuserdao getuserdao();
abstract iroledao getroledao();
}
// oralce工廠
class oraclefactory extends daofactory
public iuserdao getuserdao()
}
// mysql工廠
class mysqlfactory extends daofactory
public iuserdao getuserdao()
}
工廠方法模式和抽象工廠模式區別如下
工廠方法模式:
乙個抽象產品類,可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能建立乙個具體產品類的例項。
抽象工廠模式:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以建立多個具體產品類的例項。
區別:工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...