美文网首页
Swift设计模式----工厂方法模式

Swift设计模式----工厂方法模式

作者: 青山不改 | 来源:发表于2020-04-26 08:59 被阅读0次

工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的接口,允许子类决定实例化对象的类型。

现在我们来定一个抽象产品类:

protocol Animal {
    var type:String { get set }
    func say()
}

一个动物抽象类,里边有个type属性表示种类,一个say方法会发出声音。
然后我们搞两个具体的动物:

class Dog: Animal {
    
    var type: String = ""
    func say() {
        print("\(type)汪汪汪")
    }
    
}

class Cat: Animal {
    var type: String = ""
    
    func say() {
        print("\(type)喵喵喵")
    }
}

一猫一狗两个具体动物类,分别实现say方法。
现在我们来创建工厂超类:

protocol AnimalFactory {
    func createProduct() -> Animal
}

这个类目前只有一个功能,创建并返回一个动物。
我们来分别实现两个具体工厂:

class DogFactory: AnimalFactory {
    func createProduct() -> Animal {
        let dog = Dog()
        dog.type = "中华田园犬"
        return dog
    }
}
class CatFactory: AnimalFactory {
    func createProduct() -> Animal {
        let cat = Cat()
        cat.type = "波斯猫"
        return cat
    }
}

这两个工厂,分别创建猫和狗。客户端调用时可以这样:

DogFactory().createProduct().say()
CatFactory().createProduct().say()

打印结果是:

中华田园犬汪汪汪
波斯猫喵喵喵

这样利用工厂方法看起来跟直接使用猫类和狗类来创建对象好像没什么区别,但是却有质的改变:
1.工厂方法封装了创建对象的过程,简化客户端的创建流程,隔离了创建者和具体对象的紧密联系。
2.工厂方法里还可以实现对象池,管理对象的复用逻辑。
3.符合开闭原则,添加新的产品只需要添加一个产品类和一个工厂类。
4.符合单一职责原则,每个工厂类就负责一个产品。

相关文章

  • iOS开发之设计模式 - 工厂模式

    由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义...

  • Design Patterns Talk - Factory M

    《大话设计模式》第 8 章 - 工厂方法模式 的 Swift 实现。 问题 通过增加工厂方法的子类为新增的运算类生...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式之工厂方法模式(创建型)

    一、模式定义 工厂方法模式:又称工厂模式,也叫虚拟构造器模式,属于构建型设计模式,工厂方法模式是在简单工厂模式上进...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 设计模式系列-简单工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

网友评论

      本文标题:Swift设计模式----工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/wzgrwhtx.html