[java] 옵저버 패턴

안녕하세요! 이번에는 옵저버 패턴에 대해 알아보겠습니다. 옵저버 패턴은 소프트웨어 설계에서 한 객체의 상태 변화를 관찰하는 다른 객체들에게 알림을 전달하는 디자인 패턴입니다.

옵저버 패턴의 구조

옵저버 패턴은 주로 Subject(주제), ConcreteSubject(구체적인 주제), Observer(옵저버), ConcreteObserver(구체적인 옵저버)로 구성됩니다. Subject와 ConcreteSubject는 주제 객체를 나타내며, Observer와 ConcreteObserver는 옵저버 객체를 나타냅니다.

// Subject(주제) 인터페이스
public interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}

// ConcreteSubject(구체적인 주제) 클래스
public class ConcreteSubject implements Subject {
    private List<Observer> 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) {
            observer.update();
        }
    }
}

옵저버 패턴의 활용

옵저버 패턴은 주제의 상태 변화와 관련된 기능을 분리할 수 있어 유연하고 확장 가능한 설계를 가능하게 합니다. 예를 들어, 옵저버 패턴은 주식 시장에서 주식가격이 변동할 때 각 투자자에게 알림을 전달하는 방식으로 사용될 수 있습니다.

참고 자료

이상으로 옵저버 패턴에 대한 간단한 소개였습니다. 이 디자인 패턴을 활용하여 프로그램을 설계할 때 유용하게 활용할 수 있을 것입니다. 감사합니다!