Tech Collection

[Design Pattern] Observer Pattern 본문

Concept/Design Pattern

[Design Pattern] Observer Pattern

eee_269 2021. 5. 30. 21:27
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)
  • 진행 방식
    1. observer를 상속받는 클래스에서 생성자가 생성될 때 addObserver() 메소드를 통해 Observable에 observer로 등록된다.
    2. observable에서 변화가 나타나면 setChanged() 메소드에 의해 변화 감지
    3. observable에서 notifyObservers 메소드를 통해 모든 observer에게 연락 함
    4. observer에서 update를 통해 연락 받음
      • Observable을 상속하고 있는 클래스가 맞는지 확인 후 다른 메소드 실행
728x90
반응형