옵저버 패턴
: '이벤트'를 감시하여 이벤트가 발생할 때마다 미리 정의해둔 동작을 수행하게 해주는 프로그래밍 패턴을 옵저버 패턴이라고 한다.
ex) eventListener와 같이 키보드를 눌렀을 때, 버튼을 눌렀을 때 이벤트가 발생했다 할 수 있다.
옵저버 패턴을 구현하기 위해서는
1. 인터페이스가 필요하다.
2. 인터페이스를 포함관계로 선언한다.
3. 인터페이스를 구현한 클래스를 받을 setter 메서드를 만든다.
옵저버 패턴 예제
IButtonListener 인터페이스
1 2 3 | public interface IButtonListener { void clickEvent(String event); } | cs |
Button.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Button { private String name; private IButtonListener iButtonListener; public Button(String name) { this.name = name; } // setter 만들어주기 ! public void setIButtonListener(IButtonListener iButtonListener) { this.iButtonListener = iButtonListener; } public void click(String message) { // 콜백 메서드 - 호출이 되면 돌아간다. if(iButtonListener != null) { this.iButtonListener.clickEvent(message); } } } | cs |
MainTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class MainTest1 { // main 함수 public static void main(String[] args) { // 코드 흐림이 원래는 순차적으로 진행되는데 // 이벤트가 일어나면 다시 수행한다. Button btn = new Button("btn1"); // 인터페이스 --> 익명 클래스 --> 익명 구현 클래스 button.setIButtonListener(new IButtonListener() { @Override public void clickEvent(String event) { // 여기에 하고 싶은 동작, 알고리즘을 구현하면 된다. System.out.println("콜백 들어왔어 \n" + event); } }); btn.click("이게 콜백이야?"); btn.click("옹 옵저버 패턴이라고도 불려"); } // end of main } // end of class | cs |
콘솔 화면
'프로그래밍 > Java' 카테고리의 다른 글
Java_BeanUtils.copyProperties() (0) | 2024.01.14 |
---|---|
Java_스트림(Stream) (0) | 2023.04.09 |
Java_어댑터 패턴 (0) | 2023.03.27 |
Java_템플릿 메서드 패턴, 싱글톤 패턴, 빌더 패턴 (1) | 2023.03.23 |
Java_람다식(Lambda Expression) (1) | 2023.03.22 |