Skip to content

Observer

A reactive pattern where subscribers are automatically notified when the publisher’s state changes.

  • When UI, sound, and achievements should all react to health changes.
  • When a loosely coupled event connection is needed.
  • Subject
  • Observer
  • Subscribe / Unsubscribe

The code below is a simplified Unity example based on the scenario described above.

using System;
public sealed class HealthModel
{
public event Action<int, int> HealthChanged;
public void SetHealth(int currentHealth, int maxHealth)
{
HealthChanged?.Invoke(currentHealth, maxHealth);
}
}
public sealed class HealthBarPresenter
{
public void Bind(HealthModel healthModel)
{
healthModel.HealthChanged += OnHealthChanged;
}
private void OnHealthChanged(int currentHealth, int maxHealth) { }
}
  • Behavior is separated into smaller units, which reduces the impact of changes.
  • Adding or swapping rules is relatively safe.
  • As the number of objects and indirect calls increases, the flow can become harder to follow.
  • Ordering bugs should be pinned down with tests.

This shows the flow where a subject state change is automatically propagated to subscribers.

Observer Flow