Swift World:设计模式-工厂方法
您还记得我们在上一篇文章中讨论的简单工厂模式吗?
如图所示,我们建立了一家工厂来生产不同类型的汽车。 但是,如果列表太长怎么办。 现在,我们有卡车,跑车,公共汽车等。所有汽车都将在一个工厂内生产。 这将使工厂压力很大。 因此,我们将介绍另一种模式的“工厂方法”来提供帮助。
由于工厂对生产如此多的汽车感到压力很大,为什么不建更多的工厂呢? 好主意,那就是我们将使用Factory Method模式进行的操作。 我们将为每种类型建立工厂,以使他们保持专注。 这些工厂具有相同的界面,因为它们都生产汽车。
然后让我们更改代码。
/// abstract factory
protocol Factory {
func produce () -> Car
}
/// concrete factory
class SedanFactory : Factory {
func produce () -> Car {
return Sedan ()
}
}
/// concrete factory
class SUVFactory : Factory {
func produce () -> Car {
return SUV ()
}
}
let sedanFactory = SedanFactory ()
let sedan = sedanFactory .produce ()
sedan .drive ()
let suvFactory = SUVFactory ()
let suv = suvFactory .produce ()
suv .drive ()
工厂方法模式使代码库更灵活地添加或删除新类型。 要添加新的类型,我们只需要一个新的类型的类和一个新的工厂就可以像下面的代码一样生成它。 我们不需要更改原始代码库。
class Truck : Car {
func drive () {
print ("drive a truck")
}
}
class TruckFactory : Factory {
func produce () -> Car {
return Truck ()
}
}
let truckFactory = TruckFactory ()
let truck = truckFactory .produce ()
truck .drive ()
这就是工厂方法模式的全部内容。