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