TypseScript享元模式

   日期:2020-09-24     浏览:95    评论:0    
核心提示://享元模式就是对象池共享对象abstractclassAA{protectedintrinsic:string=null;//内部的protectedextrinsic:string=null;//外部的constructor(extrinsic:string){YBLog.log("Test","17构造函数");this.extrinsic=extrinsic;...

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

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");

//优点: 共享对象

//缺点: 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服