Observer pattern
Observer pattern
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다.
Diagram
Source
Subject.java
public interface Subject {
public void registerObserver(Observer o);
public void removeObserver(Observer 0);
public void notifyObservers();}
ConcreteSubject.java
public class ConcreteSubject implements Subject {
private ArrayList arrObserver;
private SomeData someData;public ConcreteSubject() {
arrObserver = new ArrayList();
someData = new SomeData( 1 , 2 );}
public void regsterObserver(Observer o) {
arrObserver.add(o);
}
public void removeObserver(Observer o) {
arrObserver.remove( arrObserver.indexOf(o) );
}
public void notifyObservers() {
for (int i=0 ; i < arrObserver.size() ; i++) {
Observer o = (Observer)arrObserver.get(i);
o.update(someData);}
}
private void updateData(int arg1, int arg2) {
someData.data1 = arg1;
someData.data2 = arg2;}
}
Observer.java
public interface Observer {
public void update(SomeData someData);
}
ConcreteObserver.java
public class ConcreteObserver implements Observer {
private Subject concreteSubject;
private SomeData someData;public ConcreteObserver(Subject m_concreteSubject) {
this.concreteSubject = m_concreteSubject;
this.concreteSubject.registerObject(this);}
public void update(SomeData m_someData) {
someData = m_someData;
}
}