스터디/Design Pattern
디자인 패턴 - 옵저버 패턴 (Observer Pattern)
헤콩
2020. 5. 30. 23:44
반응형
옵저버 패턴 (Observer Pattern)
- 행위 패턴 (Behavioral Pattern) 중 하나
=> 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
=> 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다.
=> 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다.
- 관찰 대상의 상태가 변화했을 때, 관찰자(Observer)에게 통지하는 패턴
- 상태 변화에 따른 처리를 기술할 때 효과적으로 활용 (MVC 패턴에서 Model과 View의 분리 등..)
- Observer 클래스에 상태 변화를 알려주고,
Observer는 다시 그 변화에 맞는 결과를 나타낸다.
"한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보가 자동으로 갱신되는 방식으로,
일대다(one-to-many) 의존성을 정의합니다."
- Head First Design Pattern
인터페이스 1 (Teacher)
public interface Teacher {
void subscribe(Students stu);
void unsubscribe(Students stu);
void notifyStudent(String msg);
}
인터페이스 2 (Students)
public interface Students {
void update(String msg);
}
상태 변화가 일어날 클래스 (Kim - Teacher)
import java.util.ArrayList;
import java.util.List;
public class Kim implements Teacher {
private List<Students> list = new ArrayList<>();
public void eatFood() {
System.out.println("김선생님이 밥을 먹는다.");
notifyStudent("나 밥 먹었다.");
}
public void runaway() {
System.out.println("김선생님이 도망갔다.");
notifyStudent("집 가라 얘들아.");
}
@Override
public void subscribe(Students stu) {
list.add(stu);
}
@Override
public void unsubscribe(Students stu) {
list.remove(stu);
}
@Override
public void notifyStudent(String msg) {
list.forEach(students -> students.update(msg));
}
}
관찰자 클래스 1 (Lee - Students)
public class Lee implements Students {
@Override
public void update(String msg) {
System.out.println("Lee 수신 : "+msg);
}
}
관찰자 클래스 1 (Park - Students)
public class Park implements Students {
@Override
public void update(String msg) {
System.out.println("Park 수신 : "+msg);
}
}
메인 클래스 1 (ObserverMain)
public class ObserverMain {
public static void main(String[] args) {
Kim kim = new Kim();
Students lee = new Lee();
Students park = new Park();
kim.subscribe(lee);
kim.subscribe(park);
kim.eatFood();
}
}
참고 :
디자인 패턴 정리
안녕하세요~ Jay의 블로그입니다.
realzero0.github.io
[디자인패턴] 옵저버 패턴 (Observer Pattern) 아주 간단하게 정리해보기
옵저버 패턴이란? 옵저버란 스타크래프트 프로토스의 유닛으로 적들을 관찰하기 위해 탄생한 유닛이다. 테란전에서 필수 유닛이며 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관
pjh3749.tistory.com
반응형