单例一般用作工具类,集中处理某些操作。
不过要注意下,避免单例导致的内容泄露。(说一下,这里不展开了)
单例有懒汉式、饿汉式、DCL等写法。
Java 中的单例,
package single;
public class DCLLazyMan {
private static DCLLazyMan dclLazyMan;
private DCLLazyMan(){
System.out.println(Thread.currentThread().getName() + ", " + toString());
}
public synchronized static DCLLazyMan getInstance(){
if (dclLazyMan == null) {
if (dclLazyMan == null) {
dclLazyMan = new DCLLazyMan();
}
}
return dclLazyMan;
}
public void printTest(){
System.out.println("printTest");
}
}
外部调用,
DCLLazyMan dCLLazyMan = DCLLazyMan.getInstance();
dCLLazyMan.printTest();
Kotlin 中的单例方式很简单,把 class 关键字改成 object
关键字就可以了。
用 AS 新建一个 kt 文件,类型选择为 Object 。
新建 Singleton 单例,写一个简单的方法。
object Singleton {
fun singletonPrintTest(){
println("singletonPrintTest...")
}
}
main()函数中验证下,
fun main(){
Singleton.singletonPrintTest()
}
运行结果,
SingletonPrintTest...
这样,单例学完了。确实简单粗暴。