為什麼要使用工廠?
考慮現實的一種情況,如果我們需要一件上衣,我們可以自己做,也可以去訂做,如果要自己做,自己必須了解做衣服的所有細節,如果訂做,只要告訴他們我們要什麼樣的就行了,我們不知道做的一切細節。在開發軟體的時候也一樣,如果我們需要乙個物件,我們可以自己new乙個,我們自己new的話,物件和客戶端必須緊密耦合。如果我們用乙個工廠類來例項化所需要的物件,我們就只告訴我們要什麼就行了。
工廠模式可以分為:
- 簡單工廠
- 工廠方法
- 抽象工廠
簡單工廠:乙個工廠可以例項化實現抽象介面的所有產品
package cn.true123;
inte***ce
water
class
springwater
implements
water
class
cocawater
implements
water
public
class
wate***ctory
}}class
client
}
如果要新增新的產品,需要得修改factory
,這就違背了open-close規則。
工廠方法:乙個抽象工廠,有多個具體工廠, 乙個抽象產品,有許多具體的產品,每個具體工廠來生產具體產品。
package cn.true123;
inte***ce
water
class
springwater
implements
water
class
cocawater
implements
water
inte***ce
ifactory
class
springwate***ctory
implements
ifactory
}class
cocawate***ctory
implements
ifactory
}public
class
client
}
如果需要另外一種水,我們可以擴充套件抽象工廠和抽象產品,這樣程式就對修改關閉,對擴充套件開放了。
工廠方式適用於乙個工廠生產一種產品,如果有多類產品,每個工廠可以生產多累產品,這時候要用到抽象工廠。
package cn.true123;
inte***ce
water
class
springwater
implements
water
class
cocawater
implements
water
inte***ce
bottle{}
class
springwaterbottle
implements
bottle
class
cocawaterbottle
implements
bottle{}
inte***ce
ifactory
class
springwate***ctory
implements
ifactory
@override
public bottle producebottle()
}class
cocawate***ctory
implements
ifactory
@override
public bottle producebottle()
}public
class
client
}
可見抽象工廠應該屬於工廠方法的公升級,但是抽象工廠使得的工廠的屬性大大增加,必須有2中產品,每種有5個具體產品,如果要全組合,就跌需要5*5=25個工廠,增加了維護成本。 java工廠模式
定義乙個用於建立物件的介面,我們需要乙個物件例項的時候就可以通過呼叫介面的方法來獲取我們想要的物件例項。首先,最簡單的 簡單工廠介面,可以返回例項 public inte ce factory 工廠實現類,返回money例項 public class moneyfactoryimpl impleme...
Java工廠模式
工廠模式理解起來並不是很難 只要耐心看看 理解它的運作機理就好了。運用時就要看個人的靈活性了。工廠是用來生產東西,但是從程式的角度講就是 用乙個工廠類來生產出你所需要的物件,這個生產出的物件可以是任意形式的 包括人,動物,水果,植物等不一定是要 機械性的東西 這是它跟現實工廠的區別之一。產品是由工廠...
java工廠模式
1.定義介面類idaouser public inte ce idaouser 2.定義工廠類,此工廠類實現了兩個不同類的呼叫。public final class daouse ctory return null 3 介面的實現,實現了介面idaouser的方法 public class daou...