html5

从0开发一个大玩具(十三)

2020-07-08  本文已影响0人  前端小旋风

上一篇中我们解决的模块间相互调用的问题,在这一篇中解决数据公用的问题

实现一个数据中心

一个数据中心可以根据类型存储字段,针对一些模块是只读的,针对一些模块是有修改权限的

简单的实现一下,这里的修改权限使用秘钥的方式发起数据存储的模块生成一个随机字符串作为秘钥保存在模块中,如果其他模块也需要修改数据则,去发起模块复制秘钥过来,后面如果出现这样的情况,再对其进行修改

另外,因为涉及到保存和再打开的问题,数据中心可能还要具备存储和解析数据的功能,并能把解析出来的秘钥正确的存储到对应模块中去,等做到了保存和再打开的功能时再更新数据中心代码

以下是具体代码实现


import BaseController from '../controller/base.controller';

interface storeInterface {
    getItem: (key:string)=>any;
    setItem: (key:string,data:any,secretKey:string)=>void;
}

export default class Store extends BaseController implements storeInterface {

    private readonly storeData:object;
    private static instance:storeInterface;
    constructor(){
        super();
        this.storeData = {};
    }

    public setItem(key:string,data:any,secretKey:string):void{
        if(!this.storeData.hasOwnProperty(key)){
            this.storeData[key] = {secretKey:secretKey,data: this.utils.cp(data)};
        }else if(this.storeData[key].secretKey === secretKey){
            this.storeData[key].data = this.utils.cp(data);
        }else{
            console.warn('非法操作数据');
        }
    }

    public getItem(key:string):any{
        return this.utils.cp(this.storeData[key].data);
    }

    public static getInstance():storeInterface{
        if(!this.instance){
            this.instance = new Store();
        }
        return this.instance;
    }

}


此致
敬礼~
小旋风

我建了一个前端微信交流群,欢迎大家加入,qq中转群号:1076484243

上一篇下一篇

猜你喜欢

热点阅读