定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到子类。--《设计模式》
工厂方式应该算是我们经常都会使用到的一种设计模式了,例如OC中的NSNumber,NSNumber可以提供int、BOOL、Float等相关类型的工厂方法来生产基于特定接口的不同类型对象。工厂模式的直观意义可以理解为:通过固定工厂,生产不同形式的单一物品。例如我有一个轮胎工厂,我可以在工厂中生产适用于汽车、卡车、摩托车等适应的轮胎。举例如下。
protocol ITyre {
func description();
}
class CarTyre : ITyre {
func description() {
println("Description : CarTyre Type");
}
}
class TruckTyre : ITyre {
func description() {
println("Description : TruckTyre Type");
}
}
class MotorTyre : ITyre {
func description() {
println("Description : MotorTyre Type");
}
}
class TyreFactory {
static func CarTyreCreate() -> ITyre {
return CarTyre();
}
static func TruckTyreCreate() -> ITyre {
return TruckTyre();
}
static func MotorTyreCreate() -> ITyre {
return MotorTyre();
}
}
TyreFactory.CarTyreCreate().description();
TyreFactory.MotorTyreCreate().description();
TyreFactory.TruckTyreCreate().description();