一句话总结
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
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()
}
何时使用?
建造者模式是当创建复杂对象的算法应该独立与该对象的组成部分以及它们的装配方法时适用的模式。