TypseScript享元模式

北城以北 提交于 2020-10-25 04:03:02

// 享元模式 就是 对象池  共享对象

abstract class AA {

    protected intrinsic: string = null; //内部的 

    protected extrinsic: string = null; //外部的

    constructor(extrinsic: string) {

        YBLog.log("Test", " 17 构造函数");

        this.extrinsic = extrinsic;

    }

    abstract operate(): string;

    public getIntrinsic() {

        return this.intrinsic

    }

    public setIntrinsic(intrinsic: string) {

        this.intrinsic = intrinsic;

    }

}

class aaa extends AA {

    operate(): string {

        return "AA ";

    }

}

//具体的构件

class Factory {

    private myMap = new Map();

    public getSingleInstance(key: string): AA {

        let ss: AA = null;

        if (this.myMap.has(key)) {

            ss = this.myMap.get(key);

            YBLog.log( "Test"," 42 42 使用旧的 ");

            

        } else {

           ss = new aaa(key);

           this.myMap.set(key,ss);

           YBLog.log( "Test"," 47 47  新建的 ");

        }

        return ss ;

    }

    public removeSingleInstance(key: string )

    {

        this.myMap.delete(key);

        YBLog.log( "Test", "54 54  剩余数量 :" , this.myMap.size);   

    }

 

}

 

let factory:Factory = new Factory();

factory.getSingleInstance( "aaa" ).operate();

factory.getSingleInstance( "bbb" ).operate();

factory.getSingleInstance( "aaa" ).operate();

factory.removeSingleInstance("aaa");

//优点: 共享对象

//缺点: 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!