BACK_END

Observer 패턴

서울소시민 2018. 4. 25. 18:50

Observer 패턴

"관찰 대상의 상태가 변화하면 관찰자에게 알려준다."


NumberGenerator는 Observer를 저장하는 arrayList를 갖는다. 그리고 추가, 저장, notifyObserver()메소드를 가지고있다. 또 추상클래스인데, getNumber(), execute() 메소드를 추상메소드로 갖는다.

NumverGenerator 클래스를 상속 받아 RandomGenerator 클래스가 나온다. 이 클래스는 execute, getNumber 메소드를 구현한다. execute() 메소드는 Random 수를 this.number 필드에 저장하고, NumberGenerator의 notifyObserver() 메소드를 호출한다.

notityObserver() 메소드는 NumberGenerator의 arrayList에 저장된 observer의 update()메소드를 호출한다. observer는 인터페이스로 구성되어 있는데, 이 인터페이스를 digitObserver, graphObserver가 implements하여 구현한다. 각 클래스에 맞는 출력물을 출력한다.

다음은 Main의 코드이다.

public class Main {
   public static void main(String[] args) {
       NumberGenerator generator = new RandomNumberGenerator();
       Observer observer1 = new DigitObserver();
       Observer observer2 = new GraphObserver();
       generator.addObserver(observer1);
       generator.addObserver(observer2);
       generator.execute();
  }
}


'BACK_END' 카테고리의 다른 글

Observer  (0) 2018.05.09
State 패턴  (0) 2018.04.25
ec2-linux MariaDB 설치/제거 하기  (0) 2017.08.31