zoukankan      html  css  js  c++  java
  • TypeScript实现设计模式——单例模式

    最近在学习设计模式,又正好刚上手了typescript,就想要用ts实现一下试试。

    单例模式的目的是限制一个类只能被实例化一次,提供一个全局的访问点。单例模式又被分为懒汉单例模式和饿汉单例模式,懒汉单例模式就是在第一次调用时实例化,饿汉单例模式是类加载时就实例化。

    核心要点:

    把一个静态私有变量确立为唯一的实例,外部通过静态方法访问这个唯一的实例,并把构造函数设为私有。

    懒汉单例模式

    class PeopleSingle {
      /**核心 - 一个接收实例的静态成员 */
      private static people: PeopleSingle;
      private name: string;
    
      /**核心 - 私有构造函数 */
      private constructor(name: string) {
        this.name = name;
      }
    
      /**核心 - 获取实例 */
      public static getInstance(): PeopleSingle {
        if (this.people == null) {
          this.people = new PeopleSingle('金闪闪');
        }
        return PeopleSingle.people;
      }
    
      public say(): void {
        console.log(`I'm ${this.name}.`);
      }
    }
    

    测试

    let people = PeopleSingle.getInstance();
    people.say();
    

    饿汉单例模式

    class PeopleSingle {
      /**核心 - 一个接收实例的静态成员,直接创建好实例 */
      private static people: PeopleSingle = new PeopleSingle('金闪闪');
      private name: string;
    
      /**核心 - 私有构造函数 */
      private constructor(name: string) {
        this.name = name;
      }
    
      /**核心 - 获取实例 */
      public static getInstance(): PeopleSingle {
        return PeopleSingle.people;
      }
    
      public say(): void {
        console.log(`I'm ${this.name}.`);
      }
    }
    

    测试

    let people = PeopleSingle.getInstance();
    people.say();
    

    举的例子不是特别好,但是意思是这个意思。

  • 相关阅读:
    cocos2d-x 动画特效集合
    cocos2d-x 2.0 序列帧动画 深入分析
    cocos2d-x 的CCObject与autorelease 之深入分析
    cocos2d-x 2.0 拖尾效果分析
    Cocos2d-x 2.0 自适应多种分辨率
    cocos2d-x学习笔记
    golang中并发sync和channel
    深入学习golang(2)—channel
    golang手动管理内存
    golang 内存池
  • 原文地址:https://www.cnblogs.com/xueyubao/p/12527573.html
Copyright © 2011-2022 走看看