07/06 디자인 패턴 기초 - Observer 패턴, Event 기반 설계

본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.

댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.

옵저버 패턴
한 객체의 상태가 변경되면, 해당 객체를 구독하고 있는 여러 객체에게 자동으로 알리는 패턴이다.
C#에서는 주로event,Action,delegate를 사용하여 구현한다.
객체 간 직접적인 의존성을 줄이고, UI·사운드·이펙트 등의 기능을 분리할 때 유용하다.
단, 사용이 끝난 옵저버는 반드시 이벤트 구독을 해제해야 한다.
예제 : 체력 변화 이벤트와 UI 구독 구조
public class PlayerHealth
{
public event Action<int, int>? OnHealthChanged;
public int Current { get; private set; }
public int Max { get; }
public PlayerHealth(int max)
{
Max = max;
Current = max;
}
public void TakeDamage(int damage)
{
if (damage <= 0) return;
Current = Math.Max(0, Current - damage);
OnHealthChanged?.Invoke(Current, Max);
}
}
public class HealthView
{
public void Bind(PlayerHealth health)
{
health.OnHealthChanged += Render;
Render(health.Current, health.Max);
}
private void Render(int current, int max)
{
Console.WriteLine($"HP: {current}/{max}");
}
}
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.

우리들의 게임 발매 이야기

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.



안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.