"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C# | 관찰자 패턴 이해

C# | 관찰자 패턴 이해

2024-07-30에 게시됨
검색:792

C# | Understanding the Observer Pattern

메모
내 개인 웹사이트에서 다른 게시물을 확인할 수 있습니다: https://hbolajraf.net

관찰자 패턴은 주체로 알려진 객체가 관찰자라고 하는 종속 항목 목록을 유지 관리하고 일반적으로 메소드 중 하나를 호출하여 상태 변경을 알리는 동작 디자인 패턴입니다. 관찰자는 주제만 인식하고 서로는 인식하지 못하기 때문에 이 패턴은 개체 간의 느슨한 결합을 촉진합니다. C#에서는 이 패턴이 이벤트 기반 프로그래밍에 일반적으로 사용됩니다.

구현

C#의 상세한 예제를 통해 Observer Pattern을 이해해 보겠습니다.

주제 인터페이스

먼저 주제에 대한 인터페이스를 정의합니다. 이 인터페이스에는 관찰자 등록, 등록 취소 및 알림을 위한 메서드가 포함됩니다.

public interface ISubject
{
    void RegisterObserver(IObserver observer);
    void UnregisterObserver(IObserver observer);
    void NotifyObservers();
}

관찰자 인터페이스

다음으로 관찰자를 위한 인터페이스를 정의합니다. 이 인터페이스에는 주체가 관찰자에게 알려야 할 때 호출하는 메서드가 포함됩니다.

public interface IObserver
{
    void Update();
}

구체적인 주제

이제 ISubject 인터페이스를 구현하는 구체적인 주제 클래스를 구현해 보겠습니다.

public class ConcreteSubject : ISubject
{
    private List observers = new List();

    public void RegisterObserver(IObserver observer)
    {
        observers.Add(observer);
    }

    public void UnregisterObserver(IObserver observer)
    {
        observers.Remove(observer);
    }

    public void NotifyObservers()
    {
        foreach (var observer in observers)
        {
            observer.Update();
        }
    }
}

콘크리트 관찰자

다음으로 IObserver 인터페이스를 구현하는 구체적인 관찰자 클래스를 구현해 보겠습니다.

public class ConcreteObserver : IObserver
{
    public void Update()
    {
        Console.WriteLine("Observer notified of state change.");
    }
}

사용 예

이제 이러한 클래스를 어떻게 함께 사용할 수 있는지 살펴보겠습니다.

class Program
{
    static void Main(string[] args)
    {
        ConcreteSubject subject = new ConcreteSubject();
        ConcreteObserver observer1 = new ConcreteObserver();
        ConcreteObserver observer2 = new ConcreteObserver();

        subject.RegisterObserver(observer1);
        subject.RegisterObserver(observer2);

        subject.NotifyObservers();

        subject.UnregisterObserver(observer1);

        subject.NotifyObservers();
    }
}

이 예에서는 ConcreteSubject가 주제이고 ConcreteObserver가 관찰자입니다. NotifyObservers()가 호출되면 두 관찰자 모두 상태 변경에 대한 알림을 받습니다. 한 명의 관찰자를 등록 취소하면 나머지 관찰자에게만 알림이 전송됩니다.

다음은 무엇입니까?

관찰자 패턴은 C#에서 개체 간 통신을 구현하는 강력한 방법입니다. 이는 느슨한 결합을 촉진하며 이벤트 기반 아키텍처에 특히 유용할 수 있습니다. 이 패턴을 이해하고 구현하면 유지 관리 및 확장이 더 용이한 코드를 작성할 수 있습니다.

릴리스 선언문 이 기사는 https://dev.to/hbolajraf/c-understanding-the-observer-pattern-1nm6에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3