类型状态机:用泛型约束实现编译期安全构建器
将构建器(Builder)模式与类型状态机(Type State)结合,在编译期防止错误调用顺序。 · 难度:入门 · +10XP
类型状态机构建器
传统的构建器模式使用可变状态,允许用户在任意顺序设置属性,导致运行时错误。本教程引入类型状态机,为构建器的每个阶段创建不同的泛型类型,利用Swift的where子句确保方法只能按合法顺序调用。例如,必须首先设置用户名,然后才能设置密码,最终才能调用build()。你会得到一个轻量但强大的编译期验证模式,特别适合需要复杂初始化流程的API设计。
struct UserBuilder {}
extension UserBuilder where HasName == False, HasPassword == False {
func setName(_ name: String) -> UserBuilder {
return UserBuilder()
}
}
extension UserBuilder where HasName == True, HasPassword == False {
func setPassword(_ pwd: String) -> UserBuilder {
return UserBuilder()
}
}
extension UserBuilder where HasName == True, HasPassword == True {
func build() -> User {
return User()
}
}