Factory Method Pattern(工廠方法模式)
介紹
將大工廠裡的相同類型拆分出來變一塊一塊的小工廠
EX:
水果工廠 > 香蕉工廠、蘋果工廠、橘子工廠
物流工廠 > 水運工廠、陸運工廠、空運工廠
好處
工廠方法把創建與使用的程式碼分離,要擴展時就不會影響其他的程式碼
程式範例
Factory Method Pattern
創建工廠接口
interface FruitFactory {
fun getFruit(): Fruit
}
創建產品接口
interface Fruit {
fun eat()
}
實現香蕉產品
class Banana : Fruit {
override fun eat() {
println("吃香蕉")
}
}
實現蘋果產品
class Apple : Fruit{
override fun eat() {
println("吃蘋果")
}
}
實現橘子產品
class Orange : Fruit {
override fun eat() {
println("吃橘子")
}
}
實現香蕉工廠(取得香蕉)
class BananaFactory : FruitFactory {
override fun getFruit(): Fruit {
return Banana()
}
}
實現蘋果工廠(取得蘋果)
class AppleFactory : FruitFactory {
override fun getFruit(): Fruit {
return Apple()
}
}
實現橘子工廠(取得橘子)
class OrangeFactory : FruitFactory {
override fun getFruit(): Fruit {
return Orange()
}
}
執行
fun main() {
FactoryTest().flyGetApple()
FactoryTest().flyGetBanana()
FactoryTest().flyGetOrange()
}
class FactoryTest {
private lateinit var fruitFactory: FruitFactory
fun flyGetBanana() {
fruitFactory = BananaFactory()
fruitFactory.getFruit().eat()
}
fun flyGetApple() {
fruitFactory = AppleFactory()
fruitFactory.getFruit().eat()
}
fun flyGetOrange() {
fruitFactory = OrangeFactory()
fruitFactory.getFruit().eat()
}
}