我正在实现一个JS模块来处理数据持久性。有一个高级类检查window.localStorage是否存在,并根据结果将存储变量设置为以下两个类之一的实例:LocalStorage和MemoryStorage。 LocalStorage类在构造函数上注入了存储,因此可以灵活地进行测试。 虽然我有一些有效的方法,但对我来说并没有优化。有更好的方法吗?
class Storage {
constructor() {
this.storage = window.localStorage ? new LocalStorage(window.localStorage) : memoryStorage
}
}
export default class LocalStorage {
constructor(storage) {
// The ternary isn't that relevant. I didn't put much thought into it yet
this.storage = storage ? storage : {};
}
}
class MemoryStorage {
constructor() {
}
}
export const memoryStorage = new MemoryStorage();
我希望对此进行改进,但也理解为什么,因为感觉不对。
答案 0 :(得分:0)
我最终创建了一个工厂,该工厂执行了一个函数,该函数将评估可用的存储类型,并优先处理LocalStorage,而LocalStorage和MemoryStorage都扩展了Storage类。