工廠方法中如何知道實體產品到底是什麼產品呢?
black_cat 發表於 2002-12-10 11:11
雖然模式上說是為了避免客戶端知道具體的實體產品。但如果修改了產品的接口,如何能讓客戶端知道新的接口呢?
比如一個Garden工廠用Create方法創建了兩個產品Flower,Glass,都屬於抽象產品Plant,但Flower增加了接口Color,而Glass沒有該接口,但有另一個接口EverGreenAble。那客戶端還是必須根據具體產品來確定該如何工作,但現在客戶端只知道是Plant類型,並不知道究竟是哪個產品啊,這種情況怎麼辦呢?
********************************************************************************在抽象工廠創建新新產品,往往帶有較明顯的功能取向性的...
epower2002 發表於 2002-12-10 11:22
比如說:
1) 建立一個抽象工廠(Abstract Factory)類HouseFactory,在這個類中聲明:
CreateWall ()
CreateDoor ()
CreateFloor ()
CreateCeiling ()
CreatePillar ()
2) 建立相應的抽象產品(Abstract Product)類集:
Wall, Door, Floor, Ceiling, Pillar
3) 為不同風格建立相應的具體工廠(Concrete Factory)類(不要忘了實現關系),例如:
ChinaHouseFactory : HouseFactory
GreeceHouseFactory : HouseFactory
…
4) 為不同的風格建立相應的具體產品(Concrete Product)類(實現相應的抽象產品),例如:
ChinaWall : Wall
ChinaDoor : Door
…
GreeceWall : Wall
GreeceDoor : Door
…
具體請見"簡話設計模式"
********************************************************************************工廠方法不知道他所得到的產品的具體類型
walaqi 發表於 2002-12-10 11:41 VB.NET
他只是在一個產品接口上進行操作。
例如:factory的createProduct1()返回一個product1類的實例。
penFactory的createproduct1()返回一個penProduct1類的實例,但是他們都必須滿足一個條件,。全部要實現product接口