单例模式番外篇

单例模式的实现方式,“江湖”上常用的招式就是先判断存在者,如果存在者存在,则不创建新的存在者,直接返回已存在的存在者;如果存在者不存在,则创建新的存在者;在写web一个对话Dialog时,突然想到,这个dialog需要保持全局唯一,这时候除了用到上面的方法外,其实还可以在创建新dialog之前移除旧有的dialog dom元素,以保持全局唯一。亦即先销毁存在者,再创建新的存在者。

亦即:

1.判断创建方式

2.销毁创建方式

(是否有其他的方式?)

这两种方式在不同的场景下特点不同:

比如Java、Js中:Java中的对象是通过垃圾回收期处理的,Js也是仿照处理。虽然程序员可以通过手动消除引用为null,但在堆内存中的对象还需等待处理。所以经常用到的单例模式实现方式为第一种方式。

另外:像在C系语言、web中html的元素,前者可以直接操作内存,后者可以直接操纵html dom,除了使用第一种方式外,还可以使用第二种方式。

但是这两种方式是各有特点,在实现时需要考虑是否需要保持状态,时空复杂度等。

posted @ 2020-07-04 20:14  博发子  阅读(105)  评论(0编辑  收藏  举报