[ 목차 ]
안녕하세요. 이번에는 Java 디자인패턴 중 옵저버(Observer) 패턴에 대해서 알아보겠습니다.
1. 옵저버(Observer) 패턴이란?
옵저버 패턴은 디자인 패턴 중 하나로, 한 객체의 상태가 변화하면 이를 알릴 수 있는 방식입니다. 이 패턴을 사용하면 객체 간의 의존성을 줄이고, 서로 약하게 결합된 객체들이 상호 작용할 수 있는 구조를 갖추게 됩니다.
2. 옵저버(Observer) 패턴 구현 방법
옵저버 패턴은 다음 요소들을 통해 구현됩니다:
- Observer 인터페이스: 객체 변경 사항을 감지하고 처리하는 인터페이스입니다.
- Subject 인터페이스: Observer 객체를 등록 및 제거하며, Observer 객체들에게 변경 사항을 알리는 인터페이스입니다.
- ConcreteSubject 클래스: Subject 인터페이스를 구현하는 실제 클래스입니다.
- ConcreteObserver 클래스: Observer 인터페이스를 구현하는 실제 클래스입니다.
// Observer 인터페이스
interface Observer {
void update(String message);
}
// Subject 인터페이스
interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
// ConcreteSubject 클래스
class MySubject implements Subject {
private List<Observer> observers;
private String message;
public MySubject(){
this.observers=new ArrayList<>();
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
3. 옵저버(Observer) 패턴의 장단점
3.1. 장점
- 객체 간의 의존성을 줄여 유연한 설계를 가능하게 합니다.
- 이벤트 발생 시 효율적으로 처리할 수 있습니다.
- 새로운 Observer 구현체를 쉽게 추가할 수 있습니다.
3.2. 단점
- 많은 수의 Observer 객체가 사용되면 성능 문제가 발생할 수 있습니다.
- 복잡한 구조로 인해 유지보수가 어려워질 수 있습니다.
4. 옵저버(Observer) 패턴의 활용 예
옵저버 패턴은 다양한 상황에서 사용할 수 있습니다. 예를 들어, 주식 거래소에서 주식 가격이 변동될 때 관심 있는 투자자들에게 변경 사항을 알리는 경우, 소셜 미디어 또는 알림 서비스에서 사용자가 구독한 콘텐츠 변경 알림을 전달하는 경우 등이 있습니다.
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴
2023.07.12 - [JAVA] - JAVA 디자인패턴 - 싱글톤(Singleton) 패턴
'JAVA' 카테고리의 다른 글
JAVA 디자인패턴 - 프록시(Proxy) 패턴 (0) | 2023.07.14 |
---|---|
JAVA 디자인패턴 - 데코레이터(Decorator) 패턴 (0) | 2023.07.13 |
JAVA 디자인패턴 - 비지터(Visitor) 패턴의 정의, 장점, 구현 (0) | 2023.07.12 |
JAVA 디자인패턴 - 이터레이터(Iterator) 패턴의 정의, 사용 이유, 구현방법 (0) | 2023.07.12 |
JAVA 디자인패턴 - 어댑터(Adapter) 패턴 (0) | 2023.07.12 |
댓글