设计模式-工厂方法

96 阅读1分钟

解释

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型,工厂模式使其创建过程延迟到子类进行。

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()