12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // 定义事件类型
- export enum EventType {
- OpenGame = "OpenGame",
- Event2 = "Event2"
- }
- // 创建观察者类
- export class Observer {
- private callbacks: Function[] = [];
- public addCallback(callback: Function) {
- this.callbacks.push(callback);
- }
- public removeCallback(callback: Function) {
- const index = this.callbacks.indexOf(callback);
- if (index !== -1) {
- this.callbacks.splice(index, 1);
- }
- }
- public notify(data: any) {
- this.callbacks.forEach(callback => {
- callback(data);
- });
- }
- }
- // 创建观察者管理类
- export class ObserverManager {
- private static observers: Map<EventType, Observer> = new Map();
- public static addObserver(eventType: EventType, callback: Function) {
- let observer = this.observers.get(eventType);
- if (!observer) {
- observer = new Observer();
- this.observers.set(eventType, observer);
- }
- observer.addCallback(callback);
- }
- public static removeObserver(eventType: EventType, callback?: Function) {
- const observer = this.observers.get(eventType);
- if (observer) {
- observer.removeCallback(callback);
- }
- }
- public static notify(eventType: EventType, data: any) {
- const observer = this.observers.get(eventType);
- if (observer) {
- observer.notify(data);
- }
- }
- }
|