Note You can check other posts on my personal website: 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<IObserver> observers = new List<IObserver>(); 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()가 호출되면 두 관찰자 모두 상태 변경에 대한 알림을 받습니다. 참관인 1명 등록 취소 후 나머지 참관인에게만 통보됩니다.
관찰자 패턴은 C#에서 개체 간 통신을 구현하는 강력한 방법입니다. 이는 느슨한 결합을 촉진하며 이벤트 기반 아키텍처에 특히 유용할 수 있습니다. 이 패턴을 이해하고 구현하면 유지 관리 및 확장이 더 용이한 코드를 작성할 수 있습니다.
위 내용은 C# | 관찰자 패턴 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!