Work & Programming/System Design

[Behavioral Pattern] - Observer

자전거통학 2024. 5. 16. 09:59

https://refactoring.guru/design-patterns/observer

 

Observer

/ Design Patterns / Behavioral Patterns Observer Also known as: Event-Subscriber, Listener Intent Observer is a behavioral design pattern that lets you define a subscription mechanism to notify multiple objects about any events that happen to the object t

refactoring.guru

 

 

Observer로 등록된 모든 객체들에게 관련 메시지를 notify 한다. 

각 observer 들은 해당 메시지를 각기 관심에 맞게 처리한다. 

 

예제

 - Level Up event를 기다리는 각종 hander 들. 

 - Game Loading End 를 기다리는 각종 hander 들. 

 - 기타 모든 특정 이벤트에 대해 사용 가능. 

 

 

예제 코드

더보기

 

public interface IObserver
{
    void Update(string message);
}

public class LevelUpDialog : IObserver
{
    public void Update(string msg)
    {
        Console.WriteLine(msg);
    }
}

public class LevelUpManager
{
    List<IObserver> _observers = new List<IObserver>();

    public void AddObserver(IObserver observer)
    {
        _observers.Add(observer);
    }
    public void RemoveObserver(IObserver observer)
    {
        _observers.Remove(observer);
    }
    public void LevelUp()
    {
        Console.WriteLine("Level Up !");

        for(int q = 0; q < _observers.Count; q++) 
        {
            _observers[q].Update("level up");
        }
    }
}

internal class ObserverDemo
{
    public void Run()
    {

    }
}