Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Apple Developer Academy @ POSTECH
- ObservableObject
- SWIFT
- 데이터베이스
- OS
- ObservedObject
- 네이버 부스트캠프
- 애플 디벨로퍼 아카데미
- StateObject
- react
- 소프트웨어분석및설계
- 앱 비교 프로젝트
- iOS 개발 오류
- 애플 디벨로퍼 아카데미 21주차 회고
- 치지직
- 네이버 치지직
- 제앱소
- 애플 디벨로퍼 아카데미 후기
- Swift 기능
- swift문법
- 애플 아카데미 후기
- Swift 디자인패턴
- 데이터베이스 공부
- apple developer academy 후기
- global soop
- sqoop
- 운영체제
- 숭실대
- useReducer
- Swift 문법
Archives
- Today
- Total
사과하는 제라스
[Swift 디자인패턴] Builder 패턴 본문
목차
728x90
반응형
디자인 패턴은 정말 많다.
참조 github: https://github.com/ochococo/Design-Patterns-In-Swift#-builder
이렇게 크게 Behavioral, Creational, Structural 파트에서 여러가지 패턴들이 존재한다.
여기서 내가 들어본 건 Singleton 패턴 뿐이긴 하다.
이번에 공부한 패턴은 Creational 즉, 생성 시의 디자인 패턴 중 하나인 Builder 패턴이다.
먼저, 코드를 보면 다음과 같이 예시를 둘 수 있다.
import UIKit
// 일단 이런 Pet 모듈이 있다.
struct Pet {
var name: String? = nil
var age: Int? = nil
init(){}
init(builder: SecondPetBuilder){
self.name = builder.name
self.age = builder.age
}
}
/* Builder 방식1 */
class PetBuilder {
private var pet : Pet = Pet()
func withName(_ name: String) -> Self {
pet.name = name
return self
}
func withAge(_ age: Int) -> Self {
pet.age = age
return self
}
func build() -> Pet {
return self.pet
}
}
let myPet = PetBuilder()
.withAge(3)
.withName("야옹이")
.build()
/* Builder 방식2 */
class SecondPetBuilder {
var name: String? = nil
var age: Int? = nil
typealias BuilderClosure = (SecondPetBuilder) -> ()
init(buildClosure: BuilderClosure) {
buildClosure(self)
}
}
let petBuilder = SecondPetBuilder { builder in
builder.name = "댕댕이"
builder.age = 10
}
let mySecondPet = Pet(builder: petBuilder)
이렇듯 Builder 패턴은 어떤 객체를 생성 시에 기본적으로 어떤 값으로 초기화해서 생성할 것인지에 대한 생성 패턴 중 하나이다.
크게 2가지 방식이 있었는데 일단 나는 첫번째 방식이 직접 코드를 짤 때 순간적으로 자연스레 작성해낼 수 있는 코드가 아닐까 싶다.
물론 두번째 클로저를 활용한 방식도 충분한 공부가 필요하긴 하다.
728x90
반응형
'제라스의 iOS 공부 > Swift 디자인 패턴' 카테고리의 다른 글
[Swift 디자인패턴] delegate 패턴을 알아보자 (0) | 2023.09.17 |
---|---|
[Swift 디자인패턴] Singleton 패턴 (0) | 2023.08.19 |