美文网首页iOS Developer
Swift设计模式:2.工厂方法模式

Swift设计模式:2.工厂方法模式

作者: 爱抽烟的芭比 | 来源:发表于2017-08-14 21:44 被阅读282次

工厂方法模式(Factory Method Pattern)

一.什么是工厂方法模式:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
它一般包含一个“工厂”对象来生产一系列的产品。这个“工厂”生产的对象都是有关联的----或者有相同的父类,或者实现相同的protocol。

二.工厂方法模式的优点:

1.良好的封装性,代码结构清晰
2.扩展性非常优秀
3.屏蔽产品类
4.降低耦合性

三.工厂模式的使用场景:

1.在所有需要生成对象的地方都可以使用,但是需要慎重地考虑是否需要增加一个工厂类进行管理,增加代码的复杂度。

2.需要灵活的,可扩展的框架时,可以考虑采用工厂方法模式。例如需要设计一个连接邮件服务器的框架,有三种网络协议可供选择:POP3,IMAP,HTTP。我们就可以把这三种连接方法作为产品类,然后定义一个工厂方法,按照不同的传入条件,选择不同的连接方式。

3.工厂方法可以用在异构项目中。

4.可以使用在测试驱动开发的框架下。

四.Swift实现工厂方法模式:

世界上有三种肤色的人:白人,黑人,黄人。这三种人都有一个共同的属性:人。它们有一个共同的父类。在有些时候,我们可能需要根据不同情况来创建三种肤色人的对象。这个时候我们就可以创建一个工厂类来创建对象:

首先,我们先定义好“人”类:

class People {
    func printColor(){
        
    }
}

class WhitePeople: People {
    override func printColor() {
        print("White Color")
    }
}

class YellowPeople: People {
    override func printColor() {
        print("Yellow Color")
    }
}

class BlackPeople: People {
    override func printColor() {
        print("Black Color")
    }
}

然后,我们定义一个工厂类:

enum PeopleColor {
    case white
    case yellow
    case black
}

class CreatePeopleFactory {
    static func productPeople(for color: PeopleColor) -> People{
        switch color {
        case .white:
            return WhitePeople()
        case .yellow:
            return YellowPeople()
        case .black:
            return BlackPeople()
        }
    }
}

现在,我们便可以使用工厂方法根据需要创建出不同的人了:

let people = CreatePeopleFactory.productPeople(for: .white)
        people.printColor()

demo地址:Factory Method Pattern

相关文章

  • 【重温设计模式】工厂设计模式

    一.介绍 工厂设计模式的分类 1.简单工厂模式2.工厂方法模式3.抽象工厂模式 工厂设计模式在工作中的应用 1.s...

  • Swift设计模式:2.工厂方法模式

    工厂方法模式(Factory Method Pattern) 一.什么是工厂方法模式: 定义一个用于创建对象的接口...

  • 工厂模式

    本章内容 1. 简单工厂模式(也叫静态工厂模式),2.工厂方法模式,3.抽象工厂模式特别建议大家可以敲下设计模式的...

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

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

  • Design Patterns Talk - Factory M

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

  • 2021-11-16 - 学习记录

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

  • 38种Javascript设计模式

    38种设计模式 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 4.建造者模式 5.原型模式 6.单例模式 ...

  • 工厂模式

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

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

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

  • 设计模式-工厂模式

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

网友评论

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

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