빌더패턴
작성일
빌더패턴
struct Friend {
var name : String? = ""
var age : Int? = 0
}
// 친구 스트럭트를 생성하는 빌더 클래스
class FriendBuilder {
// 빌더가 만드는 친구 스트럭트
private var friend : Friend = Friend()
public func withName(_ name: String) -> FriendBuilder {
//만들고자 하는 녀석을 설정하고
friend.name = name
//빌더 자기 자신을 반환한다. 이를 통해 체인처럼 유연하게 설정이 가능하다
return self
}
public func withAge(_ age: Int) -> FriendBuilder {
friend.age = age
return self
}
// 마지막으로 빌더가 만든 녀석을 반환하면서 마무리
public func build () -> Friend {
return self.friend
}
}
// 디자인 패턴은 크게 3가지로 나뉜다.
// 객체생성, 행위, 구조
// 객체생성 중 빌더패턴을 이용해 객체 생성을 유연하게 할 수 있다.
let myFriend = FriendBuilder()
.withName("철수")
.withAge(20)
.build()
print("myFriend: ", myFriend)
출력
myFriend: Friend(name: Optional("철수"), age: Optional(20))