Java Basic : day 13 - Observer Pattern 옵저버 패턴
Observer Pattern
: 정찰 -> 감시
<예시>
MyClass 감시해야할 클래스
ObserverA, B : 감시자
// 감시 해야할 클래스 : extends Observable
public class MyClass extends Observable {
private String priArg = null;
// 일반 메소드 정의하기
// 변경사항이 있을 때 Observer 클래스에 알려주는 메소드
@Override
public void notifyObservers(Object arg) { arg <---- 변경사항
String str = (String)arg;
// 변화가 없을 때 메소드 종료
if(str.equals(priArg)) return;
// 변화가 있을 때(데이터가 변화됨)
priArg = str;
setChanged();
// reset에 해당 됨
super.notifyObservers(arg);
clearChanged();
}
}
감시자 클래스
: 데이터 변경을 놓칠 수도 있으니 2개정도 만든다.
public class ObserverA implements Observer {
@Override
public void update(Observable o, Object arg) {
String str = (String) arg;
System.out.println("감시자 A 입니다. 통지를 받았음 : " + str);
}
}
public class ObserverB implements Observer {
@Override
public void update(Observable o, Object arg) {
String str = (String) arg;
System.out.println("감시자 B 입니다. 통지를 받았음 : " + str);
}
}
< Main Class >
MyClass cls = new MyClass( );
// 감시자 A, B를 추가
cls.addObserver(new ObserverA());
cls.addObserver(new ObserverB());
cls.notifyObservers("password:abc123");
}
}