일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jdk11
- JDK
- SpringBoot
- 디자인패턴
- Controller
- 코딩테스트
- Java
- JPA
- 프로젝트
- 입출력
- React
- Project
- AWS
- ps
- IntelliJ
- javascript
- spring boot
- 자바
- gradle
- 스프링
- spring
- 자취
- 백준
- MVC
- MariaDB
- 공유DB
- 코테
- coding test
- 팀프로젝트
- 취준생
Archives
- Today
- Total
Tech Collection
[Design Pattern] Observer Pattern 본문
728x90
반응형
옵저버 패턴
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식
- 일대다(1:n) 의존성을 정의한다.
- Observable (1) : Observer (n)
- 순서 상관 없이 연락 한다. (느슨한 결합)
import java.util.Observable;
public class Seeker extends Observable {
public Seeker() { }
public void alarm() {
setChanged();
notifyObservers();
}
}
import java.util.Observable;
import java.util.Observer;
public class Target extends Observer {
Observable observable;
public Target(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}
public void update (Observable obs, Object arg) {
if(obs instanceof Seeker) {
Seeker seeker = (Seeker) obs;
// 기타 메소드,,
}
}
}
- Observable의 기본 제공 메소드
- setChanged()
- notifyObservers()
- notifyObservers(Object arg)
- 진행 방식
- observer를 상속받는 클래스에서 생성자가 생성될 때 addObserver() 메소드를 통해 Observable에 observer로 등록된다.
- observable에서 변화가 나타나면 setChanged() 메소드에 의해 변화 감지
- observable에서 notifyObservers 메소드를 통해 모든 observer에게 연락 함
- observer에서 update를 통해 연락 받음
- Observable을 상속하고 있는 클래스가 맞는지 확인 후 다른 메소드 실행
728x90
반응형
'Concept > Design Pattern' 카테고리의 다른 글
[Design Pattern] Decorator Pattern (0) | 2021.05.30 |
---|---|
[Design Pattern] Factory Pattern (0) | 2021.05.30 |
[Design Pattern] Signleton Pattern (0) | 2021.05.30 |
[Design Pattern] Strategy Pattern (0) | 2021.05.30 |
[Design Pattern] 디자인 패턴이란? (0) | 2021.05.26 |