Skip to content

Commit

Permalink
Merge pull request #81 from ES2-UFPI/eryckkawa#64
Browse files Browse the repository at this point in the history
add observer design pattern in this project #64
  • Loading branch information
WhityWolf authored Aug 8, 2024
2 parents 03e090b + 9a34f82 commit 55400eb
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Assets/Scripts/Core/IObserver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public interface IObserver
{
void OnNotify(object sender, object eventData);
}
11 changes: 11 additions & 0 deletions Assets/Scripts/Core/IObserver.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Assets/Scripts/Core/ISubject.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
public interface ISubject
{
void RegisterObserver(IObserver observer);
void UnregisterObserver(IObserver observer);
void NotifyObservers(object eventData);
}
11 changes: 11 additions & 0 deletions Assets/Scripts/Core/ISubject.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions Assets/Scripts/Core/Observer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Diagnostics;
using UnityEngine;

public class Observer : MonoBehaviour, IObserver
{
public void OnNotify(object sender, object eventData)
{
// Handle the event
UnityEngine.Debug.Log($"Received event from {sender} with data: {eventData}");
}
}
11 changes: 11 additions & 0 deletions Assets/Scripts/Core/Observer.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions Assets/Scripts/Core/Subject.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System.Collections.Generic;

public class Subject : ISubject
{
private List<IObserver> observers = new List<IObserver>();

public void RegisterObserver(IObserver observer)
{
if (!observers.Contains(observer))
{
observers.Add(observer);
}
}

public void UnregisterObserver(IObserver observer)
{
if (observers.Contains(observer))
{
observers.Remove(observer);
}
}

public void NotifyObservers(object eventData)
{
foreach (var observer in observers)
{
observer.OnNotify(this, eventData);
}
}
}
11 changes: 11 additions & 0 deletions Assets/Scripts/Core/Subject.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 55400eb

Please sign in to comment.