簡體中文 | 繁體中文

大話設計模式-----第110章


傲嬌總裁:我的老公有點壞 天眼 都市小道士 醫本正經:早安,院長大人 寵愛無邊:大神,認栽吧! 腹黑總裁的契約戀人 鳳凰飛來封皇妃 王爺爭妃 變身傑西卡 狂戰星河 陰陽詭醫在都市 冷情總裁:我的小逃妻 庶女為王 惡魔守護天使 無非愛恨 走近不科學 獵殺全球 綜影視穿越司職員奮鬥記 一億元的處女之夜 狼煙:我的193
第110章

小A:“工廠方法模式涉及到哪些角色?”

大B:工廠方法模式的角色有:抽象工廠(Creator)角色、具體工廠(ConcreteCreator)角色、抽象產品(Product)角色、具體產品(ConcreteProduct)角色。

抽象工廠(Creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠(ConcreteCreator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。

有兩個這樣的角色:BulbCreator與TubeCreator。

抽象產品(Product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

具體產品(ConcreteProduct)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

//產品Plant介面

publicinterfacePlant{}

//具體產品PlantA,PlantB

publicclassPlantAimplementsPlant{

publicPlantA(){

System.out.println(“createPlantA!”);

}

publicvoiddoSomething(){

System.out.println(“PlantAdosomething……”);

}

}

publicclassPlantBimplementsPlant{

publicPlantB(){

System.out.println(“createPlantB!”);

}

publicvoiddoSomething(){

System.out.println(“PlantBdosomething……”);

}

}

//產品Fruit介面

publicinterfaceFruit{}

//具體產品FruitA,FruitB

publicclassFruitAimplementsFruit{

publicFruitA(){

System.out.println(“createFruitA!”);

}

publicvoiddoSomething(){

System.out.println(“FruitAdosomething……”);

}

}

publicclassFruitBimplementsFruit{

publicFruitB(){

System.out.println(“createFruitB!”);

}

publicvoiddoSomething(){

System.out.println(“FruitBdosomething……”);

}

}

//抽象工廠方法

publicinterfaceAbstractFactory{

publicPlantcreatePlant();

publicFruitcreateFruit();

}

//具體工廠方法

publicclassFactoryAimplementsAbstractFactory{

publicPlantcreatePlant(){

returnnewPlantA();

}

publicFruitcreateFruit(){

returnnewFruitA();

}

}

publicclassFactoryBimplementsAbstractFactory{

publicPlantcreatePlant(){

returnnewPlantB();

}

publicFruitcreateFruit(){

returnnewFruitB();

}

}

推薦小說