美文网首页
生成器 (Builder)

生成器 (Builder)

作者: 863cda997e42 | 来源:发表于2017-09-25 13:44 被阅读11次

    The builder pattern is used to create complex objects with constituent parts that must be created in the same order or using a specific algorithm. An external class controls the construction algorithm.(建造者模式是用于创建复杂对象的组成部分,必须创建相同的顺序或使用一个特定的算法。一个外部类控制构造算法。)

    class DeathStarBuilder {
    
        var x: Double?
        var y: Double?
        var z: Double?
    
        typealias BuilderClosure = (DeathStarBuilder) -> ()
    
        init(buildClosure: BuilderClosure) {
            buildClosure(self)
        }
    }
    
    struct DeathStar : CustomStringConvertible {
    
        let x: Double
        let y: Double
        let z: Double
    
        init?(builder: DeathStarBuilder) {
    
            if let x = builder.x, let y = builder.y, let z = builder.z {
                self.x = x
                self.y = y
                self.z = z
            } else {
                return nil
            }
        }
    
        var description:String {
            return "Death Star at (x:\(x) y:\(y) z:\(z))"
        }
    }
    /*:
    ### Usage
    */
    let empire = DeathStarBuilder { builder in
        builder.x = 0.1
        builder.y = 0.2
        builder.z = 0.3
    }
    
    let deathStar = DeathStar(builder:empire)
    

    相关文章

      网友评论

          本文标题:生成器 (Builder)

          本文链接:https://www.haomeiwen.com/subject/oaarextx.html