|
@@ -0,0 +1,55 @@
|
|
|
+export class SObjectObserver {
|
|
|
+ /** 回调函数 */
|
|
|
+ private readonly callback: Function;
|
|
|
+ /** 信号接收者 */
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
+ private readonly receiver: any = null;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构造函数
|
|
|
+ *
|
|
|
+ * @param receiver 信号接收者
|
|
|
+ * @param callback 回调函数
|
|
|
+ */
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
+ constructor(receiver: any, callback: Function) {
|
|
|
+ this.receiver = receiver;
|
|
|
+ this.callback = callback;
|
|
|
+ } // Constructor
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送通知
|
|
|
+ *
|
|
|
+ * @param args 参数
|
|
|
+ */
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
+ notify(...args: any[]): void {
|
|
|
+ if (args.length == 2) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1]);
|
|
|
+ } else if (args.length == 3) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2]);
|
|
|
+ } else if (args.length == 4) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2], args[3]);
|
|
|
+ } else if (args.length == 5) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2], args[3], args[4]);
|
|
|
+ } else if (args.length == 6) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2], args[3], args[4], args[5]);
|
|
|
+ } else if (args.length == 7) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
|
|
|
+ } else if (args.length == 8) {
|
|
|
+ this.callback.call(this.receiver, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
|
|
|
+ } else {
|
|
|
+ this.callback.call(this.receiver, ...args);
|
|
|
+ }
|
|
|
+ } // Function notify()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上信号接收者比较
|
|
|
+ *
|
|
|
+ * @param receiver 信号接收者
|
|
|
+ */
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
+ compar(receiver: any): boolean {
|
|
|
+ return receiver == this.receiver;
|
|
|
+ } // Function compar()
|
|
|
+} // Class EventObserver
|