EventManager.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // 定义事件类型
  2. export enum EventType {
  3. OpenGame = "OpenGame",
  4. Event2 = "Event2"
  5. }
  6. // 创建观察者类
  7. export class Observer {
  8. private callbacks: Function[] = [];
  9. public addCallback(callback: Function) {
  10. this.callbacks.push(callback);
  11. }
  12. public removeCallback(callback: Function) {
  13. const index = this.callbacks.indexOf(callback);
  14. if (index !== -1) {
  15. this.callbacks.splice(index, 1);
  16. }
  17. }
  18. public notify(data: any) {
  19. this.callbacks.forEach(callback => {
  20. callback(data);
  21. });
  22. }
  23. }
  24. // 创建观察者管理类
  25. export class ObserverManager {
  26. private static observers: Map<EventType, Observer> = new Map();
  27. public static addObserver(eventType: EventType, callback: Function) {
  28. let observer = this.observers.get(eventType);
  29. if (!observer) {
  30. observer = new Observer();
  31. this.observers.set(eventType, observer);
  32. }
  33. observer.addCallback(callback);
  34. }
  35. public static removeObserver(eventType: EventType, callback?: Function) {
  36. const observer = this.observers.get(eventType);
  37. if (observer) {
  38. observer.removeCallback(callback);
  39. }
  40. }
  41. public static notify(eventType: EventType, data: any) {
  42. const observer = this.observers.get(eventType);
  43. if (observer) {
  44. observer.notify(data);
  45. }
  46. }
  47. }