Observer는 2개이상.
Main
public class mainClass {
public static void main(String[] args) {
/*
Observer : 감시, 정찰
감시자 패턴 => class감시
*/
MyClass cls = new MyClass();
//cls에 감시자를 추가 함
cls.addObserver(new ObserverA());//update들 에서 호출
cls.addObserver(new ObserverB());
cls.setId("abc123");
cls.setPassword("a1004");
//받아온 바뀐 데이터를 " " 안에 집어넣음
cls.notifyObservers(cls.getPassword());
//감시자 B입니다. 변화를 감지했습니다 : a1004
//감시자A 입니다. 통지 받았음 : a1004
}
}
MyClass
public class MyClass extends Observable{//Human
private String preArg = null;
private String id;
private String password;
//일반메소드
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void notifyObservers(Object arg) {
String str = (String)arg;
//변화가 없었을 때 -> 통지 안함.
if (str.equals(preArg)) return;//->현재null값, null이 리턴됨
//변화가 있을 때
preArg = str;
setChanged();//reset
super.notifyObservers(arg); //통보가됨
clearChanged();
}
}
ObserverA
public class ObserverA implements Observer {
@Override
public void update(Observable o, Object arg) {
String str = (String)arg;
System.out.println("감시자A 입니다. 통지 받았음 : "+str);
}
}
ObserverB
public class ObserverB implements Observer {
@Override
public void update(Observable o, Object arg) {
String msg = (String)arg;
System.out.println("감시자 B입니다. 변화를 감지했습니다 : "+msg);
}
}
'JAVA > UI' 카테고리의 다른 글
가위바위보 게임 프로그램 (0) | 2020.06.12 |
---|---|
label / 확인창 뜨게하기 (0) | 2020.06.11 |
Label 과 Panel (0) | 2020.06.11 |
AWT (0) | 2020.06.11 |
Lable (0) | 2020.06.11 |