본문 바로가기

Observer pattern

(3)
Observer Pattern ③ 정리 옵저버 패턴에서는 느슨한 결합(Loose Coupling)이라는 객체 디자인을 제공합니다. 그럼 느슨하게 결합 되어 있다는 이야기가 무슨 이야기가 될까요?? 책에는 상호작용을 하지만 서로간에 대해 서로 잘 모른다는 것을 의미 한다고 합니다. 말이 너무 어려워서 만든 소스코드를 보면서 이해해 보도록 하겠습니다. 몬스터(주제)는 플레이어에 대해서 아는 정보라고는 인터페이스 정보 뿐입니다. public void notifyPlayer() { for (int i = 0; i < list.size(); i++) { Player player = (Player) list.get(i); player.update(weakness, frenzy); } } 이처럼 플레이어를 구현한 객체에 대한 정보 없이 단순히 인터페이스에..
Observer Pattern ② 패턴 활용 예제 먼저 지난 Strategy Pattern 예제는 스타크래프트로 만들었는데 이번에는 월드 오브 워크래프트를 이용해서 한번 만들어 보았습니다. 게임을 통해서 무언가 공부를 한다는건 재미있고 또 이해하는데 많은 도움이 되는것 같습니다. 먼저 옵저버 패턴에서의 Subject(주제)가 되는 것은 몬스터라고 설정을 했습니다. 몬스터를 잡기 위해서는 혼자보다는 파티 구성을 해서 잡기 때문에 파티원 하나하나를 옵저버로 보고, 몬스터의 광포화 상태와 약점의 속성이 바뀔때 마다 플레이어의 반응이 달라지도록 구현을 했습니다. 일단 몬스터라는 클래스의 소스코드를 살펴보시겠습니다. package designPattern.Observer; import java.util.ArrayList; public class Monster i..
Observer Pattern ① 개요 지난번 Strategy Pattern에서는 상속과 구현을 이용한 클래스 설계 후에 그것을 리팩토링 하면서 해나가면서 배우는 디자인 패턴이었다면, 이번에는 다른 방법으로 접근을 해보겠습니다. 먼저 Observer Pattern을 간단하게 그림과 함께 알아보도록 하겠습니다. 유후군 잇힝리라는 마을이 있다고 가정을 합시다. 잇힝리에 사는 현씨네 큰 아들이 장가를 간다고 이장님이 이 동네사는 현아네, 윤주네, 범석이네 식구들에게 방송으로 이 경사스러운 소식을 알렸습니다. 그렇지만 잇힝리에 살지 않는 한산이네까지는 방송이 되지 않았습니다. 옵저버 패턴은 이와 같이 동네 이장님이 동네 사람들에게 어떤 소식을 알리는 것과 같은 것을 비유해서 알고 있으면 기억하기가 쉽습니다. 보통 유식한 말로 이렇게 이야기 합니다. ..