13-TypeScript单例模式

在JavaScript中,要实现设计模式比较复杂。而在TypeScript中因为使用面向对象的思想编程,要实现设计模式的方式与后端语言C#、Java等非常类似。

单例模式是一种常用的设计模式,通常用于我们只允许类的一个实例存在时,会使用单例模式。基本思路是把类的构造函数声明为私有的,这样调用方就不能通过实例化来

生成实例多个对象,另外类中有一个方法控制对象实例化,如果已经存在一个实例则直接返回,不存在则初始化一个新对象。

class User{
    public name:string;
    public age:number;
    private constructor(name:string,age:number){
        this.name=name;
        this.age=age;
    }
    private static user:User;
    public static GetInstance(name:string,age:number){
        if(this.user){
            return this.user;
        }
        else{
            var user=new User(name,age);
            return user;
        }
    }
    public GetUserInfo():string{
        return "UserName:"+this.name+" Age:"+this.age.toString();
    }
}

调用方:

var user=User.GetInstance("caojian",37);
console.log(user.GetUserInfo());

欢迎加入QQ群讨论:573336726

时间: 2024-11-05 21:53:44

13-TypeScript单例模式的相关文章

【7.13】单例模式(Singleton)的用法和用处以及破解单例

1):用处   是一种创建者模式,只生成一个实例对象,具有全局唯一性,当一个对象的产生需要比较多的资源时, 如读取配置(如数据库连接池.Spring中, 一个Component就只有一个实例Java-Web中, 一个Servlet类只有一个实例等), 产生其他依赖对象, 则可以通过在应用启动时直接产生一个单例对象, 然后永久驻留内存的方式来解决 2):写法 private化构造函数 private Singleton实例 提供一个public的获取实例的方法 主要有五种实现方式,懒汉式(延迟加载

基础知识(02) -- 单例模式

单例模式 1.基本概念 2.单例模式的定义 3.单例模式中的角色 4.单例模式延迟加载 5.单例模式中使用静态内部类解决"懒汉式"和"饿汉式"带来的问题 6.什么是类级内部类 ---------------------------------------------------------------- 1.基本概念: 单例模式是设计模式中使用最普遍的模式了,它是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例. 使用单例模式可以带

单例模式(java环境)

程序中只需要创建某个类的一个实例,用到单例模式. 应用场景:Runtime类.数据库连接池.日志管理(例如:log4j) 实现原理:一个类,内部定义了该类的静态变量,并且定义了获取该静态变量的静态方法:构造函数的访问权限定义为 private: 饿汉式单例模式:(类加载时被创建) 1 public class Singleton { 2 private static Singleton instance = new Singleton(); 3 private Singleton(){ // 访

php数据库单例模式理解

单例模式(职责模式): 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 单例类: 1.构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化:2.拥有一个保存类的实例的静态成员变量3.拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化) 单例模式的要点有三个: 一是某个类只能有一个实

KOTLIN开发语言文档(官方文档) -- 入门

1.   入门 1.1.  基本语法 1.1.1.   定义包 包说明应该在源文件的顶部: 1 package my.demo 2 import java.util.* 3 // … 并不要求包与目录匹配:源文件可以在文件系统中的任意地方. 查看:包(2.2) 1.1.2.   定义函数 函数带有Int类型参数,并返回Int类型值: 1 fun sum(a: Int, b: Int): Int { 2 return a+b 3 } 函数体可以是表达式,并可从中推断出返回值类型: 1 fun su

自言自语Spring依赖注入(XML配置)

首先说一点,因为Spring中的对象默认为单例,想要获取它默认init_lazy默认为false. 下面的图是整个流程的流程图,下面跟的源码解析就是按照这个流程来的. 至于基于XML依赖注入的过程,首先要找一个比较合适的入口,那就是getBean.那么具体是怎么实现的呢?首先写个测试方法: ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("application-common.xml",&q

腾讯分分彩源码带龙虎和玩法自言自语Spring依赖注入(XML配置)

至于基于XML依赖注入的过程,首先要找一个比较合适的入口,那就是getBean.那么具体是怎么实现的呢?首先写个测试方法: ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("application-common.xml","application-beans.xml","application_jdbc.xml");Object obj = app.g

后台开发面经1

1.八大数据结构及分类 1.数组 频繁查询,对存储空间要求不大,很少增加和删除的情况 2.栈 栈常应用于实现递归功能方面的场景,例如斐波那契数列 3.队列 因为队列先进先出的特点,在多线程阻塞队列管理中非常适用 4.链表 数据量较小,需要频繁增加,删除操作的场景 5.树 二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用. 6.散列表 哈希冲突的问题,如果处理的不好会浪费大量的时间,导致应用崩溃 7.堆 因为堆有序的特点,一般用来做数组中的排序,称为堆排序

python面向对象面试集锦(1-23)

目录 1.简述面向对象三大特性 2.什么是鸭子类型? 3.super作用? 4.mro是什么? 5.什么是C3算法? 6.列举面向对象中带双下线的特殊方法? 7.单下划线与双下划线的作用? 8.实例变量和类变量的区别? 9.静态方法和类方法区别? 10.isinstance.issubclass和type的作用? 11.有用过with statement(语句)吗?它的好处是什么? 12.不可迭代的数据类型和可迭代的数据类型? 13.单例模式?singleton 14.python中如何判断一个

python 各模块

01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支持模块 12 _ _builtin_ _ 模块 121 使用元组或字典中的参数调用函数 1211 Example 1-1 使用 apply 函数 1212 Example 1-2 使用 apply 函数传递关键字参数 1213 Example 1-3 使用 apply 函数调用基类的构造函数 122