[swift] SwiftGen과 함께 사용하는 디자인 패턴
SwiftGen은 개발자들이 iOS 앱 개발 시 자주 사용되는 리소스를 자동으로 생성하고 관리할 수 있는 툴이다. 이 글에서는 SwiftGen과 함께 자주 사용되는 디자인 패턴에 대해 알아보겠다.
목차
확장
확장은 Swift에서 이미 존재하는 타입에 기능을 추가하는 방법이다. SwiftGen을 사용하여 생성된 코드에 확장을 이용하여 추가적인 기능을 구현할 수 있다. 예를 들어, SwiftGen으로 생성된 코드에서 이미지의 크기, 색상 또는 애니메이션을 관리하고 싶다면, 해당 타입에 확장을 추가하여 사용할 수 있다.
// SwiftGen으로 생성한 이미지 리소스
enum ImageAsset {
case icon
// ...
}
// 이미지 리소스에 관련된 추가 기능 구현
extension ImageAsset {
func setColor(_ color: UIColor) {
// 이미지에 색상을 적용하는 로직 구현
}
func resize(to size: CGSize) {
// 이미지를 크기 조정하는 로직 구현
}
func animate() {
// 이미지 애니메이션을 실행하는 로직 구현
}
}
싱글톤
싱글톤은 앱 전체에서 단일 인스턴스를 공유하고 해당 인스턴스에 접근하는 디자인 패턴이다. SwiftGen을 사용하여 생성된 코드를 싱글톤 패턴으로 확장하여 리소스 관리를 간단하게 할 수 있다.
// SwiftGen으로 생성한 색상 리소스
enum ColorAsset {
case primary
// ...
}
// 싱글톤으로 리소스를 관리하기 위한 클래스
class ColorManager {
static let shared = ColorManager()
private init() {}
func getColor(_ colorAsset: ColorAsset) -> UIColor {
// 싱글톤으로 관리하는 리소스를 반환하는 로직 구현
}
}
팩토리
팩토리는 객체 생성을 추상화하는 디자인 패턴으로, 객체를 생성하기 위한 별도의 클래스 또는 메소드를 제공한다. SwiftGen과 함께 팩토리 패턴을 사용하여 리소스를 생성하는 클래스를 만들 수 있다. 예를 들어, SwiftGen으로 생성된 코드에서 문자열 리소스를 사용하는 경우 팩토리 패턴을 이용하여 문자열을 생성할 수 있다.
// SwiftGen으로 생성한 문자열 리소스
enum LocalizedString {
case welcomeMessage
// ...
}
// 문자열 리소스를 생성하는 팩토리 클래스
class LocalizationFactory {
static func createString(_ stringAsset: LocalizedString) -> String {
// 팩토리 패턴을 이용하여 문자열 리소스를 생성하는 로직 구현
}
}
빌더
빌더는 객체 생성 과정을 단계별로 나누어 객체를 생성하는 디자인 패턴이다. SwiftGen으로 생성된 코드에 빌더 패턴을 적용하여 객체를 생성하는 과정을 더욱 유연하게 관리할 수 있다. 예를 들어, SwiftGen으로 생성된 코드에서 뷰 리소스를 사용하는 경우 빌더 패턴을 이용하여 뷰를 생성할 수 있다.
// SwiftGen으로 생성한 뷰 리소스
enum ViewAsset {
case loginButton
// ...
}
// 뷰를 생성하고 구성하는 빌더 클래스
class ViewBuilder {
private(set) var view: UIView
init() {
self.view = UIView()
}
func addLabel(with text: String) {
// 뷰에 레이블을 추가하는 로직 구현
}
func addButton(with asset: ViewAsset) {
// 뷰에 버튼을 추가하는 로직 구현
}
// ...
}