ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 单例模式 [TOC] 在编写程序时经常会遇到一些典型的问题或某些特定的需求,设计模式就是针对这些问题和需求的一种解决方式。单例模式就是其中的一种。所谓的单例模式就是在程序运行期间针对该类只存在一个实例。 ### Java中的单例 什么是单例?单例是一种设计模式,用来保证某一个类只有一个实例。**在Kotlin中,object关键字用来修饰需要单例化的类**。 首先我们来看看Java如何实现单例, 代码如下: ![](http://upload-images.jianshu.io/upload_images/7368752-4913ddf9e1658129.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### Kotlin中的单例 上面示例代码通过Java实现单例,非常麻烦。**在Kotlin中,只要通过object关键字就能实现单例**,简洁高效。**哪个类需要单例,就在该类名前添加object关键字即可**。代码如下: ![](http://upload-images.jianshu.io/upload_images/7368752-0a3ed0c1262c23fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 针对以上代码,**创建单例对象的时候使用的是`Person`,而不是`Person()`,也就是去掉了括号。通过结果可以看出,单例类如果之前创建过对象,后面创建的对象将会指向之前创建的对象。所以,看到两个对象toString之后打印的结果一样** 我们继续让单例类带上属性,看看下面的案例能否去理解参考代码: ![](http://upload-images.jianshu.io/upload_images/7368752-8b542d0785c69266.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 针对以上代码,感觉是两个独立的person1对象和person2对象,其实不是,因为我们的Person类通过了object关键字修饰,是一个单例。所以,才有了如下的结果。