我刚刚从 Android 基础转移到 ios,在 swift 中寻找构建器模式 get 和 set 方法,但找不到类似的东西。仅发现以下内容
var ptype : String? {
get{
return self.ptype
}set (ptype) {
self.ptype = ptype
}
}
在使用了这么多用 Swift 编写的库之后,我很少看到人们在 Swift 中使用构建器模式。
我认为 Builder 模式的主要优点已经可以通过 Swift 的其他语言功能来实现。您完全可以创建一个所有参数都是可选的构造函数,并且您几乎只是在 Swift 中重新创建了构建器模式:
class Foo {
let a: Int
let b: String
let c: Bool
init(a: Int = 0, b: String = "", c: Bool = false) {
self.a = a
self.b = b
self.c = c
}
}
您可以创建一个Foo
像这样:
// You can omit any of the arguments, just like the builder pattern
Foo(
a: 123
b: "Hello World"
c: true
)
我认为这是 Java 中类似的更简洁的版本:
new FooBuilder()
.setA(123)
.setB("Hello World")
.setC(true)
.build()
但如果你坚持的话,这里有一些非常冗长的 Swift 实现了 Builder 模式:
class Foo {
private(set) var a: Int = 0
private(set) var b: String = ""
private(set) var c: Bool = false
init(a: Int = 0, b: String = "", c: Bool = false) {
self.a = a
self.b = b
self.c = c
}
class Builder {
private var innerFoo = Foo()
@discardableResult
func withA(_ a: Int) -> Builder {
innerFoo.a = a
return self
}
@discardableResult
func withB(_ b: String) -> Builder {
innerFoo.b = b
return self
}
@discardableResult
func withC(_ c: Bool) -> Builder {
innerFoo.c = c
return self
}
func build() -> Foo {
return innerFoo
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)