通过 proxy 和普通模式实现单例
- 新建变量存储
- porxy实现
代码实现如下
import * as Cesium from 'cesium'
import { createVNode, render } from 'vue'
import Prompt from "@/components/Cesium/CesiumPrompt/index"
/*
* @Description: 事件管理
* @LastEditTime: 2021-09-06 14:02:03
*/
class EventManager {
// 存储单例
private static instance
// 单例模式调用方式
static getInstance({ viewer }) {
if (!EventManager.instance) {
EventManager.instance = new EventManager({ viewer })
}
return EventManager.instance
}
constructor({ viewer }) {
this.viewer = viewer
this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
this.promt = null
}
addEvent({ eventType, callback }) {
}
removeEvent({ eventType }) {
}
}
const instanceEventManager = (ClassName) => {
let ins
return new Proxy(ClassName, {
construct(target, args) {
if (!ins) {
ins = new ClassName(args[0])
}
return ins
}
})
}
export default instanceEventManager(EventManager)