디자인 패턴 중 옵저버 패턴(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;
}
}
'CS > DesignPattern' 카테고리의 다른 글
패턴 정리 (브릿지, 어댑터, 전략) (0) | 2020.06.18 |
---|---|
(DesignPattern) 퍼사드 패턴 (0) | 2020.06.07 |
(DesignPattern) 책임사슬 패턴 (0) | 2020.05.30 |
(DesignPattern) 방문자 패턴 (0) | 2020.05.30 |
(DesignPattern) 데코레이터 패턴 (0) | 2020.05.30 |