interface subject interface Observer interface Display Element register
<<interface>> subject <<interface>> Observer <<interface>> Display. Element register. Observer() remove. Observer() notify. Observers() update() display() Current. Graph. Display Rs. Equipment. Data register. Observer() remove. Observer() notify. Observers() …. . measurements. Changed( ) update() display()
코드 설명 public interface Subject{ public void register. Observer(Observer o); public void remove. Observer(Observer o); public void notify. Observers(); }
코드 설명 public interface Observer{ public void update( …. ); }
코드 설명 public interface Display. Element { public void display(); }
코드 설명(1) public class Rs. Equipment. Data{ private Array. List<Observer> observers; …. . public Rs. Equipment. Data(){ observers = new Array. List<Observer>(); } public void register. Observer(Observer o){ observers. add(o); } } public void remove. Observer(Observer o){ int i = observers. index. Of(o); if( i >= 0) observers. remove(i); }
코드 설명(2) public class Rs. Equipment. Data{ public void notify. Observers(){ for(int i = 0; i < observers. size(); i++){ Observer observer = observers. get(i); observer. update(. . . ); } }. . . }
코드 설명 • class Current. Graph. Display 실시간 그래프를 그려주는 class
코드 설명 public class Current. Graph. Display { private Subject rs. Data; . . . public Current. Graph. Display(Subject rs. Data){ this. rs. Data = rs. Data; rs. Data. register. Observer(this); } public void update(. . ){. . display(); } } public void display(){. . }
참고 도서 Head. First Design Patterns
- Slides: 15