[swift] Factory 디자인 패턴의 용도와 예시

Factory 디자인 패턴은 객체 생성을 추상화하여 코드 유연성을 높이는 데 사용됩니다.

패턴 용도

Factory 디자인 패턴은 객체 생성을 위임함으로써 클래스 간의 의존성을 최소화하고 클라이언트 코드를 단순화시키는 데 적합합니다. 이로써 객체 생성 및 유형에 대한 결정을 쉽게 변경하고 확장할 수 있습니다.

패턴 예시

예를 들어, 게임에서 여러 유형의 캐릭터를 생성해야 할 때, Factory 패턴을 활용할 수 있습니다.

protocol Character {
    func attack()
}

class Warrior: Character {
    func attack() {
        print("Warrior is attacking")
    }
}

class Mage: Character {
    func attack() {
        print("Mage is casting a spell")
    }
}

class CharacterFactory {
    func createCharacter(type: String) -> Character? {
        switch type {
        case "warrior":
            return Warrior()
        case "mage":
            return Mage()
        default:
            return nil
        }
    }
}

let factory = CharacterFactory()
let player1 = factory.createCharacter(type: "warrior")
player1?.attack() // Output: Warrior is attacking
let player2 = factory.createCharacter(type: "mage")
player2?.attack() // Output: Mage is casting a spell

위 예시에서, CharacterFactory는 클라이언트가 생성할 캐릭터 유형을 전달받아 해당하는 객체를 생성하고 반환합니다. 이를 통해 클라이언트 코드는 구체적인 캐릭터 클래스 생성 로직을 알 필요 없이 간단하게 캐릭터를 생성할 수 있습니다.

Factory 디자인 패턴을 사용하면 유연성과 확장성을 높일 수 있으며, 객체 생성과 관련된 변경을 쉽게 처리할 수 있습니다.

참고 자료