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 |