Daily coding
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");
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 14 - AWT & SWING 2 (0) | 2019.12.08 |
---|---|
Java Basic : day 14 - AWT & SWING 1 (0) | 2019.12.08 |
Java Basic : day 13 - Factory Pattern 팩토리패턴 (0) | 2019.12.04 |
Java Basic : day 13 - Calendar 캘린더 클래스 (0) | 2019.12.04 |
Java Basic : day 12 - Example01: Baseball 선수정보 입력(HashMap, TreeMap사용) 버전 2 (0) | 2019.12.04 |