顺序重要的Swift Builder模式

问题描述

因此,我想创建一个顺序重要的构建器。但是,我不想让呼叫者担心该命令的顺序。

class myClass {
    private var a: Bool
    private var b: Bool
    private var c: Bool
    init() {
        a = false
        b = false
        c = false
    }
    func build() { // enforces order
        if a {
            // build a
        }
        if b {
            // build b
        }
        if c {
            // build c
        }
        return
    }
    func setA() -> myClass {
        a = true
        return self
    }
    func setB() -> myClass {
        b = true
        return self
    }
    func setC() -> myClass {
        c = true
        return self
    }
}

这是我当前的解决方案。这样,呼叫者无需关心订单。构建函数将处理订单。这就是我想要的。但是我的问题是,我可以不使用布尔值来做到这一点吗?有没有更干净的解决方案来实现相同的目的?

解决方法

一种解决方案是改用数组来跟踪应该执行的操作。从您的代码中,我认为可以将每个部分完成的工作视为一个不带参数并返回Void的函数,因此我创建了该函数类型的数组,每个setX函数都会在正确的索引处将相应的函数添加到该数组中,然后函数以它们在数组中出现的顺序被调用。

using

示例

xyz

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...