设计模式之 Builder 建造者模式: Swift 实现

该博客介绍了建造者模式的应用,通过将对象构造过程分离到独立的Builder对象,允许创建不同类型的复杂实例。Director类负责协调建造过程,可以根据输入参数构建简单或复杂的产品。示例中展示了如何通过Builder1和Builder2实现不同产品的构建。
摘要由CSDN通过智能技术生成

Builder 建造者模式

Extracting the instance’s building code from the instance’s class, and put the code into a “Builder” object to do the build work. So we can build different complex instance by using different composition of the builder method. Besides, Add a “director” to manage the calling form client.

将对象的构造代码从对象的产品类代码中抽离出来,将这些代码放置在一个名为 “生成器” 的独立对象中。 所以,我们可以通过在建造方法中使用不同的组合,来创建不同的复杂实例。并且,增加一个 “指挥者” 来管理那些来自外界客户对调用。

在这里插入图片描述

// Director
class HouseDirector{
    var builder: HouseBuilder
    init (builder: HouseBuilder) {
        self.builder = builder
    }
    func changeBuilder(bulider: HouseBuilder) {
        self.builder = bulider
    }
    // The function "make" define the house must built by some componets. 
    func make(type: String) {
        builder.reset()
        if type == "simple" {
            builder.buildA()
        } else {
            builder.buildB()
            builder.buildC()
        }
    }
}

// Builder
protocol HouseBuilder {
    func reset()
    func buildA()
    func buildB()
    func buildC()
}

class Builder1: HouseBuilder {
    private var result: Product1?
    func reset() {
        result = Product1()
    }
    func buildA() {
        
    }
    func buildB() {
        
    }
    func buildC() {
        
    }
    func getResult() -> Product1? {
        return result
    }
}

class Builder2: HouseBuilder {
    private var result: Product2?
    func reset() {
        result = Product2()
    }
    func buildA() {
        
    }
    func buildB() {
        
    }
    func buildC() {
        
    }
    func getResult() -> Product2? {
        return result
    }
}

class Product1 {
    
}

class Product2 {
    
}

let b = Builder1()
let director = HouseDirector(builder: b)
director.make(type: "complex")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值