1、特点
- 在全局呗唯一使用
-
2、UML类图
Java有private属性,实现单例模式很容易 ```java public class SingleObject {
private SingleObject() {} // 私有化构造函数,外部不能实例化只能内部实例化
private SingleObject instance = null
private SingleObject getInstance() {
if (instance == null) {
return new SingleObject()
}
return instance
} }
// 外部只能通过getInstance来获取这个单例 SingleObject.getInstance()
JavaScript版
```javascript
class SingleObject {
login() { console.log('login...') }
}
SingleObject.getInstance = (function() {
let instance
return function() { // 利用闭包
if (!instance) {
instance = new SingleObject()
}
return instance
}
})()
// 缺点是SingleObject还是可以被实例化
let obj = new SingleObject()
示例:
- JQuery只有一个$
if (window.jQuery != null) {
return window.jQuery
} else {
// 初始化
}
- 购物车
- vuex redux中的store