单例模式(Singleton Pattern)

什么叫单例模式,简单来说就是一个实例只生产一次。

单例模式的实例

这个很简单,我觉得可以直接看代码。

这是一种“懒汉式”写法,还有一种叫饿汉式写法,区别是懒汉使用时才初始化,饿汉则先初始化,用的时候直接给。

由于js不需要考虑线程安全,所以推荐使用懒汉式写法,饿汉在JS中反而容易产生没必要的垃圾。

  1. class SingleObject {
  2. constructor() {
  3. // 防止调用new初始化
  4. if(new.target != undefined) {
  5. const errorMsg = "This is single object,Can't use keyword new!";
  6. const tipMsg = "You should use method getInstance to get instance。";
  7. throw new Error(`\n${errorMsg}\n${tipMsg}`)
  8. }
  9. }
  10. static getInstance(){
  11. // 生产单例
  12. if(SingleObject.instance) {
  13. return SingleObject.instance;
  14. }
  15. SingleObject.instance = {};
  16. SingleObject.instance.__proto__ = SingleObject.prototype;
  17. return SingleObject.instance;
  18. }
  19. showMessage(){
  20. console.log("Hello World!");
  21. }
  22. }
  23. const instance = SingleObject.getInstance();
  24. instance.showMessage();
  25. /**
  26. * output:
  27. * Hello World!
  28. */

单例模式的优势

对于频繁使用且可重复使用的对象,可以极大来减少内存消耗和没必要的垃圾回收。

上一页(抽象工厂模式)

下一页(建造者模式)