본문 바로가기
Architecture

[Architecture] 빌더(Builder) 패턴

by Sky Titan 2021. 6. 21.
728x90
 

클린 아키텍처

살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한

www.yes24.com

빌더(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

댓글