设计模式之 Factory Mode 工厂模式:Swift 实现

本文介绍了工厂模式在Swift编程中的实现,通过定义蛋糕创建者协议和产品协议,实现了不同类型的蛋糕(如MongoCake和ChocolateCake)的创建。工厂方法将核心业务逻辑与具体产品类分离,使得代码更具扩展性。若要新增蛋糕类型,只需遵循协议并创建相应创建者即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Factory Mode 工厂模式

Provide the method for creating an instance in the superclass, and allow the subclass to choose the type of the instance.

在父类中提供创建对象的方法,允许子类决定实例化对象的类型。

具备的部分:生产者协议、产品协议,往后就可以根据需要来扩展每一种产品。

请添加图片描述

具体的生产者比如 MongoCakeCreator 的存在是为了实现与产品相关的核心业务逻辑,而不仅仅是创建 MongoCake 实例。工厂方法将核心业务逻辑从具体产品类中分离出来。

// Creator
protocol CakeCreator {
    func createCake() -> Cake
    func doSomethingForCake(cake: Cake) -> Cake
}

// Product
protocol Cake {
    func doWork()
}

// ConcreteCreator
class MongoCakeCreator: CakeCreator {
    var cake: MongoCake?
    func createCake() -> Cake {
        var cake = MongoCake()
        doSomethingForCake(cake: cake)
        return cake
    }
    func doSomethingForCake(cake: Cake) -> Cake{
        cake.doWork()
        cake.doWork()
        return cake
    }
    
}

// ConcreteCreator
class ChocolateCakeCreator: CakeCreator {
    func createCake() -> Cake {
        var cake = ChocolateCake()
        doSomethingForCake(cake: cake)
        return cake
    }
    
    func doSomethingForCake(cake: Cake) -> Cake{
        cake.doWork()
        return cake
    }
}

class MongoCake: Cake {
    func doWork() {
        print("Add some mongo")
    }
}

class ChocolateCake: Cake {
    func doWork() {
        print("Add some chocolate")
    }
}

// If we want to add a type of cake call "PinapleCake", just need to 
// make it conform to Cake and add a creator that conform to the CakeCreator for the "PinapleCake"

let cakeOne = MongoCakeCreator().createCake()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值