JS设计模式--单例模式

介绍

  • 系统中被唯一使用
  • 一个类只有一个实例

说明

  • 单例模式需要使用java的特性(private)
  • ES6中没有(TS除外)
  • 使用java代码演示

演示

	public class SingleObject {
		// 注意,私有化构造函数,外部不能new,只能内部new
		private SingleObject() {/* ... */}
		// 唯一被new出来的对象
		private SingleObject instance = null;
		// 获取对象的唯一接口
		public SingleObject getInstance() {
			if (instance === null) {
				// 只能new一次
				instance = new SingleObject();
			}
			return instance;
		}
		// 对象方法
		public void login(username, password) {
			System.out.println("login...");
		}
	}
	// 只能文档说明这里只能通过 getInstance 接口获取实例,而不能使用 new SingleObject()
	// 因为这里 new SingleObject() 不会报错,但却是错误的使用方法
	class SingleObject {
		login() {
			console.log('login');
		}
	}
	// 静态方法
	SingleObject.getInstance = (function () {
		let instance = null;
		return function () {
			if (instance === null) {
				instance = new SingleObject();
			}
			return instance;
		}
	}());

场景

  • jQuery 只有一个 $
	if (window.jQuery != null) {
		return window.jQuery;
	} else {
		// 初始化...
	}
  • 登录框
  • 购物车
  • vuex 和 redux 中的 store

你可能感兴趣的:(JS设计模式)