[swift] Swift 코드 설계 패턴

Swift는 강력하면서도 유연한 언어로, 다양한 코드 설계 패턴을 구현할 수 있습니다. 이 글에서는 Swift에서 널리 사용되는 몇 가지 코드 설계 패턴을 살펴보겠습니다.

1. MVC(Model-View-Controller)

MVC는 Swift 애플리케이션을 설계하는 데 가장 널리 사용되는 패턴 중 하나입니다. 모델은 데이터와 비즈니스 로직을 담당하고, 뷰는 사용자 인터페이스를 표시하며, 컨트롤러는 모델과 뷰 간의 상호 작용을 조정합니다. 이 패턴을 사용하면 코드를 쉽게 관리하고 유지보수할 수 있습니다.

// 모델
struct User {
    var name: String
    var age: Int
}

// 뷰
class UserProfileView {
    func displayUserInfo(name: String, age: Int) {
        // 유저 정보를 화면에 표시
    }
}

// 컨트롤러
class UserProfileController {
    let user: User
    let view: UserProfileView

    init(user: User, view: UserProfileView) {
        self.user = user
        self.view = view
    }

    func loadUserInfo() {
        view.displayUserInfo(name: user.name, age: user.age)
    }
}

2. Singleton

싱글톤은 애플리케이션 내에서 오직 하나의 인스턴스만을 갖는 객체를 생성하는 패턴입니다. 이를 통해 전역적인 상태와 설정을 접근하고, 관리할 수 있습니다.

class SettingsManager {
    static let shared = SettingsManager()

    private init() { }

    func updateSettings() {
        // 설정 업데이트 로직
    }
}

3. Delegate

델리게이트는 객체 간의 상호 작용을 위해 사용되는 패턴으로, 객체가 특정 이벤트 발생 시 다른 객체에 대한 콜백을 호출할 수 있습니다.

protocol DataUpdaterDelegate: AnyObject {
    func didUpdateData()
}

class DataManager {
    weak var delegate: DataUpdaterDelegate?

    func fetchData() {
        // 데이터를 가져오고 업데이트
        delegate?.didUpdateData()
    }
}

class ViewController: DataUpdaterDelegate {
    let dataManager = DataManager()

    init() {
        dataManager.delegate = self
    }

    func didUpdateData() {
        // 데이터 업데이트 후 UI 업데이트 로직
    }
}

Swift에서는 이러한 코드 설계 패턴을 적용하여 읽기 쉽고 유지보수가 용이한 애플리케이션을 구축할 수 있습니다. 고유한 요구 사항과 프로젝트에 가장 적합한 패턴을 선택하여 사용하는 것이 중요합니다.