본문 바로가기

CS/DesignPattern

(DesignPattern) 옵져버 패턴(1)

디자인 패턴 중 옵저버 패턴(Observer Pattern)을 알아보자. 객체지향 설계를 하다보면 객체들 사이에서 다양한 처리를 할 경우가 많다. 예를 들어 한 객체의 상태가 바뀔 경우 다른 객체들에게 변경됐다고 알려주는 경우를 들 수 있다. 상태를 가지고 있는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수가 있다. 서로의 정보를 넘기고 받는 과정에서 정보의 단위가 클 수록, 객체들의 규모다 클 수록, 각 객체들의 관계가 복잡할 수록 점점 구현하기 어려워지고 복잡성이 매우 증가할 것이다. 이러한 기능을 할 수 있도록 가이드라인을 제시해 주는 것이 바로 옵저버 패턴이다.

 

객체외부, 이벤트 처리

public class Main {
	public static void main(String[] args) {
		Button button = new Button();
		
		button.setOnClickListener(new ButtonClick());	
		button.onClick();
	}
}
class ButtonClick implements onClickListener {

	@Override
	public void onClick(Button button) {
		// TODO Auto-generated method stub
		System.out.println(button+ "is Clicked");
	}
	
}
public class Button {
	
	public void onClick() {
		//이벤트 처리
		if (onClickListener != null) {
			onClickListener.onClick(this);
		}
	}
	
	public interface onClickListener {
		public void onClick(Button button);
	}
	
	private onClickListener onClickListener;
	
	public void setOnClickListener(onClickListener onClickListener) {
		this.onClickListener = onClickListener;
	}
}