https://www.youtube.com/watch?v=1dwx3REUo34
아래 내용은 위영상을 참고해서 작성했습니다
Observer
인터페이스 클래스를 만듭니다.Observer
인터페이스는 update()
메서드를 가지고 있습니다.Observer
를 상속받아 실제 옵저버 클래스를 만듭니다. 이 때 옵저버들은 각각 update()
함수를 가지고 있습니다.addObserver()
와 소유하고 있는 observer의 update()
함수를 호출하는 notify()
함수가 있습니다. +-------------+
| Observer |
| (protocol) |
+------+------+
^
|
+---------+---------+
| |
| |
+---------+ +---------+
| Cat | | Dog |
+---------+ +---------+
^ ^
| |
+---------+---------+
|
+-----+-----+
| Owner |
+-----------+
// Define the Observer protocol
protocol Observer {
func update()
}
// Define Cat class conforming to Observer
class Cat: Observer {
func update() {
print("meow")
}
}
// Define Dog class conforming to Observer
class Dog: Observer {
func update() {
print("bark")
}
}
// Define the Owner class
class Owner {
private var animals = [Observer]()
// Register an animal observer
func register(animal: Observer) {
animals.append(animal)
}
// Notify all registered observers
func notify() {
for animal in animals {
animal.update()
}
}
}
// Example usage
let owner = Owner()
let cat = Cat()
let dog = Dog()
owner.register(animal: cat)
owner.register(animal: dog)
owner.notify()
//meow
//bark