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());

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则。

ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 NCZ 的初衷不是重复造一个轮子...

1.3K70
来自专栏web

javascript -- 变量

10210
来自专栏移动开发

java split()

java提供了split根据传入的分隔符,返回数组的方法.但是对于一些特殊字符我们要注意下,以防获取的不是我们想要的结果. 如想要根据”竖线”分隔:

21410
来自专栏xiaoxi666的专栏

C++数据个数未知情况下的输入方法

我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。

18910
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则

65750
来自专栏Golang语言社区

厚土Go学习笔记 | 16. go语言有指针 没有指针运算

指针内其实就是保存了一个变量地址。 var p *int 这行代码声明了一个 int 类型的指针 p i := 42 p = &i & 符号是取地址符,&i 代...

364100
来自专栏搞前端的李蚊子

JS——判断一个对象是否为空

判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,为真则为“非空数组”;否则为“空数组” ?  2.通过JSO...

51380
来自专栏python百例

117-可变与不可变对象的效率

python是一种解释型的语言,执行效率要比C这样的编译型语言差得多,但是也应该注意它的效率。 python的各种数据类型,按更新模型可以分为可变类型(如列表...

10410
来自专栏Java帮帮-微信公众号-技术文章全总结

shell编程基础入门

shell编程基础入门 文章最后有下载shell学习指南电子书链接。 1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bi...

36540
来自专栏C语言及其他语言

【编程经验】宏定义

预处理命令可以改变程序设计环境,提高编程效率,它们并不是 C 语言本身的组成部分,不能直接对它们进行编译,必须在对程序进行编译之前,先对程序中这些特殊的命令进行...

35160

扫码关注云+社区

领取腾讯云代金券