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版```javascriptclass SingleObject {login() { console.log('login...') }}SingleObject.getInstance = (function() {let instancereturn 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
