JHHK

欢迎来到我的个人网站
行者常至 为者常成

3、Factory

目录

工厂模式

简单工厂模式在产品数量较少时很好用,当数量很多时,工厂类就会很重,代码很多。

这个时候我们可以使用工厂模式,使用多个解耦的工厂类,每个工厂类负责创建对应的产品对象

这就需要我们有一个工厂类接口,一个产品类接口

img

工厂模式实现 - 工厂类

一、创建一个工厂类接口

protocol VehicleFactory {
    func create() -> Vehicle
}

二、多个 (解耦的) 工厂类

每个工厂方法创建一个实例

1、CarFactory.swift

class CarFactory: VehicleFactory {
    
    func create() -> Vehicle {
        //制作过程
        return Car()
    }
}

2、PlaneFactory.swift

class PlaneFactory: VehicleFactory {

    func create() -> Vehicle {
        //制作过程
        return Plane()
    }
}

3、BroomFactory

class BroomFactory: VehicleFactory {
    func create() -> Vehicle {
        //制作过程
        return Broom()
    }
}

工厂模式实现 - 产品类

一、创建一个产品接口

protocol Vehicle {
    func run()
}

二、创建实现接口的实体类

1、Car.swift

class Car: Vehicle {
    func run() {
        print("car running ...")
    }
}

2、Plane.swift

class Plane: Vehicle {
    func run() {
        print("plane flying ...")
    }
}

3、Broom.swift

class Broom: Vehicle {
    func run() {
        print("broom chua chua chua ...")
    }
}

工厂模式实现 - 使用

一、使用

//我们代码内部使用Vehicle实例处理事务
//当我们新增加一个产品时,只需要创建一个产品类,一个产品类工厂,下面代码不需要改动
func vehicleEvent(_ vehicle:Vehicle){
    vehicle.run()
}

vehicleEvent(CarFactory().create())
vehicleEvent(PlaneFactory().create())
vehicleEvent(BroomFactory().create())

二、打印信息

car running ...
plane flying ...
broom chua chua chua ...

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.