解释
工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型,工厂模式使其创建过程延迟到子类进行。
Swift实现方式
// 工厂创建产品共有的特性
protocol Product {
func show()
}
// 创建产品的工厂
class Factory: Product {
// 子类继承创建实例对象方法
func createProduct() -> Product? { return nil }
func show() { print(type(of: self)) }
}
// 产品A
class ProductNameA: Factory {
// 子类实现创建的产品实际类型
override func createProduct() -> Product? {
return ProductNameA()
}
}
// 产品B
class ProductNameB: Factory {
// 子类实现创建的产品实际类型
override func createProduct() -> Product? {
return ProductNameB()
}
}
// 产品C
class ProductNameC: Factory {
// 子类实现创建的产品实际类型
override func createProduct() -> Product? {
return ProductNameC()
}
}
// 工厂
let no = Factory().createProduct()
no?.show()
let a = ProductNameA().createProduct()
a?.show()
let b = ProductNameB().createProduct()
b?.show()
let c = ProductNameC().createProduct()
c?.show()