[행동패턴] Visitor pattern

suojae·2023년 12월 20일
0

[iOS] 디자인패턴

목록 보기
5/10

Visitor 패턴이란 오브젝트 Structure로부터 알고리즘을 분리해내는 방법이다. 이렇게되면 기존의 오브젝트 구조에 대한 수정없이 원하는 알고리즘을 자유롭게 적용시킬 수 있다 -> open/closed 원칙을 따르는 디자인패턴!

protocol Visitor {
    func visit(elem: Cat)
}

class NameVisitor: Visitor {
    func visit(elem: Cat) {
        print(elem.name)
    }
}

class AgeVisitor: Visitor {
    func visit(elem: Cat) {
        print(elem.age)
    }
}

class Cat {
    let name: String
    let age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func speak() {
        print("Meow")
    }

    func accept(visitor: Visitor) {
        print("Use implementation of visitor")
        visitor.visit(elem: self)
    }
}

// Example usage
let cat = Cat(name: "Whiskers", age: 3)
let nameVisitor = NameVisitor()
let ageVisitor = AgeVisitor()

cat.accept(visitor: nameVisitor) // "Whiskers"
cat.accept(visitor: ageVisitor)  // "3"


profile
Hi 👋🏻 I'm an iOS Developer who loves to read🤓

0개의 댓글