abstract class MgrBase<T> {
private static _instance;
public static instance<T>(c: { new(): T }): T {
if(!this._instance) this._instance = new c();
return this._instance;
}
public constructor() { }
public abstract init(): void;
public abstract onUpdate(delta:number): void;
public abstract recover(): void;
}
class BattleMgr extends MgrBase<BattleMgr> {
public init(): void {
CharacterMgr.instance(CharacterMgr).init();
MonsterMgr.instance(MonsterMgr).init();
}
public onUpdate(delta: number): void {
}
public recover(): void {
}
constructor() {
super();
}
}
class CharacterMgr extends MgrBase<CharacterMgr> {
public init(): void {
console.log("CharacterMgr.init()");
}
public onUpdate(delta: number): void {
console.log("CharacterMgr.onUpdate()");
}
public recover(): void {
}
constructor() {
super();
}
}
class MonsterMgr extends MgrBase<MonsterMgr> {
public init(): void {
console.log("MonsterMgr.init()");
}
public onUpdate(delta: number): void {
console.log("MonsterMgr.onUpdate()");
}
public recover(): void {
}
constructor() {
super();
}
}
BattleMgr.instance(BattleMgr).init();
Ts - 泛型单例模式的一种实现
于 2022-07-27 01:42:44 首次发布