java Observer pattern 실습해보기

오늘은 java로 Observer pattern을 실습해보았습니다.

옵저버, 즉 관찰자 패턴라고하며, 이 관찰자의 목록이 객체에 등록되어 상태에 변화가 있을때마다 메소드로 통지되는 패턴입니다.

주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다고 합니다.

방식

이벤트가 발생하면 각 옵저버는 콜백을 받고, notify 함수는 관찰 대상이 발행한 메시지등을 전달합니다.

notify 함수를 구현함으로써 이벤트가 발생했을 때 처리할 각자의 동작을 정의할 수 있습니다.

코드

package observer;

import java.util.Observable;

public class Button extends Observable implements Runnable{

	@Override
	public void run() {
		setChanged();
		notifyObservers();
	}
}

Runnable 메소드를 오버라이딩하면서 Observable에서 메소드를 사용합니다.

package observer;

import java.util.Observable;
import java.util.Observer;

public class Main {

	public static void main(String[] args) 
    {
		Button button = new Button();

		button.addObserver(new Observer() {

			@Override
			public void update(Observable o, Object arg) {

				System.out.println(o+" is Clicked");
			}
		});

		button.run();

		button.run();
		
        button.run();
		
	}

}

우선 Observable과 Observer를 import합니다.

메인 클래스에서 버튼 객체를 만들고, 버튼 이 객체에서 addObserver 메소드를 불러옵니다.

다만, 업데이트 메소드를 오버라이드해주어야 합니다.

테스트겸 run 메소드를 실행합니다.

Written on February 15, 2018