设计模式-9.建造者模式(生成器模式)

264 阅读1分钟

一句话总结

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

Code

protocol PersonBuilder {
    func buildHead()
    func buildBody()
    func buildArm()
    func buildLeg()
}

class PersonThinBuilder: PersonBuilder {
    func buildHead() {
        print("创建瘦的头")
    }
    
    func buildBody() {
        print("创建瘦的身体")
    }
    
    func buildArm() {
        print("创建瘦的手")
    }
    
    func buildLeg() {
        print("创建瘦的脚")
    }
}

class PersonFatBuilder: PersonBuilder {
    func buildHead() {
        print("创建胖的头")
    }
    
    func buildBody() {
        print("创建胖的身体")
    }
    
    func buildArm() {
        print("创建胖的手")
    }
    
    func buildLeg() {
        print("创建胖的脚")
    }
}

class PersonDirector {
    let pb: PersonBuilder
    
    init(_ pb: PersonBuilder) {
        self.pb = pb
    }
    
    func createPerson() {
        pb.buildHead()
        pb.buildBody()
        pb.buildArm()
        pb.buildLeg()
    }
}

func main() {
    let pb = PersonThinBuilder()
    let pd = PersonDirector(pb)
    pd.createPerson()
}

何时使用?

建造者模式是当创建复杂对象的算法应该独立与该对象的组成部分以及它们的装配方法时适用的模式。