目录
工厂模式
简单工厂模式在产品数量较少时很好用,当数量很多时,工厂类就会很重,代码很多。
这个时候我们可以使用工厂模式,使用多个解耦的工厂类,每个工厂类负责创建对应的产品对象
这就需要我们有一个工厂类接口,一个产品类接口
工厂模式实现 - 工厂类
一、创建一个工厂类接口
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 ...
行者常至,为者常成!