디자인 패턴 - Observer
오늘은 디자인 패턴 중 하나인 Observer 패턴에 대해 간단히 소개해드리려고 합니다. Observer 패턴이란? Observer 패턴은 객체의 상태 변화를 관찰하는 객체들을 등록하고, 객체의 상태가 변경될 때마다 등록된 객체들에게 알림을 보내는 패턴입니다. 즉, 객체의 상태 변화를 관찰하고 싶은 객체들을 객체에 등록하고, 객체의 상태가 변경될 때마다 등록된 객체들에게 알림을 보내는 방식으로 객체의 상태 변화를 관리합니다. Observer 패턴의 장점 Observer 패턴을 사용하면 다음과 같은 장점이 있습니다. 객체의 상태 변화를 관찰하고 싶은 객체들을 쉽게 관리할 수 있습니다. 객체의 상태 변화를 관찰하는 객체들을 쉽게 추가하거나 제거할 수 있습니다. 객체의 상태 변화를 관찰하는 객체들 간의 결합도를 낮출 수 있습니다. Observer 패턴의 예시 Observer 패턴의 예시로 게임의 캐릭터를 생각해 볼 수 있습니다. 게임의 캐릭터는 자신의 상태가 변경될 때마다, 이를 관찰하고 있는 다른 캐릭터들에게 알림을 보냅니다. 다음은 Observer 패턴을 사용하여 게임의 캐릭터를 구현한 예시입니다. Python Code 위 코드에서 Character 클래스는 observers라는 리스트를 사용하여 Observer 객체들을 관리합니다. notifyObservers() 메서드는 observers 리스트에 등록된 모든 Observer 객체들에게 알림을 보냅니다. Enemy 클래스는 Character 클래스를 상속받아 구현됩니다. Enemy 클래스는 hp 필드를 사용하여 적의 체력을 관리합니다. changeState() 메서드는 적의 체력이 0 이하가 되면, notifyObservers() 메서드를 호출하여 플레이어에게 알림을 보냅니다. Player 클래스도 Character 클래스를 상속받아 구현됩니다. Player 클래스는 attack_power 필드를 사용하여 플레이어의 공격력을 관리합니다. update() 메서드는 notifyObservers() 메서드를 호출하여 적에게 알림을 보냅니다.
![😘](https://static.cafenono.com/emoji/14/img-apple-64/1f618.png)
![😀](https://static.cafenono.com/emoji/14/img-apple-64/1f600.png)
![👏](https://static.cafenono.com/emoji/14/img-apple-64/1f44f.png)
![👍](https://static.cafenono.com/emoji/14/img-apple-64/1f44d.png)
4