관찰자 패턴 이라고 한다.
변화가 일어났을때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.
많이 보이는 곳은 Event Listener에서 해당 패턴을 사용 하고 있다.
package com.company.design.observer;
public interface IButtonListener {
void clickEvent(String event); // 버튼이 클릭되면 이벤트를 받을 수 있게 인터페이스 생성
}
버튼을 작성하여 클릭시 buttonListener을 통해서 이벤트를 전달 하도록 작성
package com.company.design.observer;
public class Button {
private String name;
private IButtonListener buttonListener;
public Button(String name){ // 생성자에서 전달 받도록 작성
this.name = name;
}
public void click(String message){ // 메세지가 일어나면 buttonListener을 통해서 전달
buttonListener.clickEvent(message);
}
public void addListener(IButtonListener buttonListener) {
this.buttonListener = buttonListener;
}
}
버튼을 활용하여 클릭 이벤트 발생시 buttonListener을 통해 이벤트를 전달 받는다.
public class main {
public static void main(String[] args) {
Button button = new Button("버튼");
button.addListener(new IButtonListener(){ // 익명 클래스로 전달받아서 입력
@Override
public void clickEvent(String event){
System.out.println(event); // 리스너를 통해서 이벤트를 전달
}
});
button.click("메시지 전달 :click1");
button.click("메시지 전달 :click2");
button.click("메시지 전달 :click3");
button.click("메시지 전달 :click4");
}
}
전략 패턴 (0) | 2022.08.03 |
---|---|
파사드 패턴 (0) | 2022.08.03 |
데코레이터 패턴 (0) | 2022.08.03 |
프록시 패턴 (0) | 2022.08.02 |
Adapter pattern (0) | 2022.08.01 |