728x90
빌더(Builder) 패턴
- 복잡하게 구성된 제품을 만들 때 같은 절차를 통하여 서로 다른 결과물을 만들 수 있도록 하는 패턴
- 객체의 생성과정과 표현방법을 분리함으로써 같은 생성 공정이 다른 표현을 만들 수 있게함.
- 구성요소를 먼저 결정
- 이후 조합
import Foundation
enum Hobby: String {
case drive
case game
case football
}
class Human {
var name: String = ""
var age: Int = 0
var hobby: Hobby?
func descript() {
print("Hi I am \(name) and \(age) years old.")
guard let hobby = hobby else {return}
print("My Hobby is \(hobby.rawValue)")
}
func createName(_ name: String) -> Human {
self.name = name
return self
}
func createAge(_ age: Int) -> Human {
self.age = age
return self
}
func createHobby(_ hobby: Hobby) -> Human {
self.hobby = hobby
return self
}
}
var human = Human()
.createName("Smith")
.createAge(10)
.createHobby(.football)
human.descript()
print()
var human2 = Human()
.createName("Lisa")
.createAge(15)
human2.descript()
/* 결과
Hi I am Smith and 10 years old.
My Hobby is football
Hi I am Lisa and 15 years old.
*/
728x90
'Architecture' 카테고리의 다른 글
[Architecture] 템플릿 메서드 (Template Method) 패턴 (0) | 2021.07.04 |
---|---|
[Architecture] 프로토타입 패턴 (Prototype Pattern) (0) | 2021.07.04 |
[Architecture] 아키텍처 (Architecture) (0) | 2021.06.20 |
[Architecture] SOLID 원칙 (0) | 2021.05.29 |
[Architecture] 구조적 프로그래밍 (0) | 2021.05.29 |
댓글