Observer
Observer
Section titled “Observer”One-line pattern summary
Section titled “One-line pattern summary”A reactive pattern where subscribers are automatically notified when the publisher’s state changes.
Typical Unity use cases
Section titled “Typical Unity use cases”- When UI, sound, and achievements should all react to health changes.
- When a loosely coupled event connection is needed.
Parts (roles)
Section titled “Parts (roles)”- Subject
- Observer
- Subscribe / Unsubscribe
Unity example (C#)
Section titled “Unity example (C#)”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) { }}Advantages
Section titled “Advantages”- Behavior is separated into smaller units, which reduces the impact of changes.
- Adding or swapping rules is relatively safe.
Things to watch out for
Section titled “Things to watch out for”- As the number of objects and indirect calls increases, the flow can become harder to follow.
- Ordering bugs should be pinned down with tests.
Interaction diagram
Section titled “Interaction diagram”This shows the flow where a subject state change is automatically propagated to subscribers.