TypseScript享元模式

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

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

扫描二维码关注公众号,回复: 11813459 查看本文章

    }

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

//优点: 共享对象

//缺点: 

猜你喜欢

转载自blog.csdn.net/ting100/article/details/108754591