[swift] Builder 디자인 패턴
Builder 디자인 패턴은 객체 생성 시 유연성을 제공하고 가독성을 향상시키는 데 도움이 되는 디자인 패턴입니다. 이 패턴을 사용하면 객체를 생성하고 조립하는 방법에 대한 세부 정보를 캡슐화하여 객체 생성 코드가 깔끔하고 간결해질 수 있습니다.
Builder 패턴의 구성 요소
Builder 패턴은 다음과 같은 구성 요소로 이루어져 있습니다:
- BuilderInterface: 객체를 생성하는 인터페이스를 정의합니다.
- ConcreteBuilder: Builder 인터페이스를 구현하고 객체를 조립하는 방법을 정의합니다.
- Director: Builder를 사용하여 객체를 생성하는 방법을 제공합니다.
- Product: Builder를 통해 생성된 객체를 표현합니다.
Builder 패턴의 장점
Builder 패턴을 사용하면 다음과 같은 장점을 얻을 수 있습니다:
- 객체 생성 코드의 가독성 향상
- 복잡한 객체를 생성하기 위한 간단한 API 제공
- 객체 생성 과정의 유연성 제공
Builder 패턴의 예제
// Builder 인터페이스
protocol HouseBuilder {
func buildFloor()
func buildWalls()
func buildRoof()
func buildWindows()
}
// ConcreteBuilder
class WoodenHouseBuilder: HouseBuilder {
func buildFloor() {
print("Building wooden floor")
}
func buildWalls() {
print("Building wooden walls")
}
func buildRoof() {
print("Building wooden roof")
}
func buildWindows() {
print("Building wooden windows")
}
}
// Director
class CivilEngineer {
private var houseBuilder: HouseBuilder
init(builder: HouseBuilder) {
self.houseBuilder = builder
}
func constructHouse() {
houseBuilder.buildFloor()
houseBuilder.buildWalls()
houseBuilder.buildRoof()
houseBuilder.buildWindows()
}
}
// Product
class House {
// House 속성 및 동작
}
// 사용 예제
let woodenHouseBuilder = WoodenHouseBuilder()
let engineer = CivilEngineer(builder: woodenHouseBuilder)
engineer.constructHouse()
위의 예제에서, CivilEngineer
가 WoodenHouseBuilder
를 사용하여 House
객체를 생성합니다.
결론
Builder 패턴은 객체 생성 코드를 깔끔하고 유연하게 만들어주는 강력한 디자인 패턴입니다. 이를 통해 복잡한 객체를 생성하고 조립하는 과정을 단순화하고 가독성을 향상시킬 수 있습니다.
자세한 내용은 다음 참고 자료를 참조하시기 바랍니다.
참고 자료: