设计模式遇到scala-单例模式_singleton
Singleton是最常用的设计模式,其结构非常简单,但是用Java完成一个优美的单例并不是那么容易的事,如多线程下有Double-Checked Lock等问题。在Scala中一切都是那么的自然,object就是singleton!
单例代码:
object Singleton { |
测试代码:
object Test extends App { |
OK,简单到令人发指的地步。
接下来,我们用Java Decompiler反编译(直接javap也可以)看下Scala编译器编译后的class文件指令,看看原理如何:
从输出目录中可以看到Scala编译器将Singleton.scala编译生成了两个文件Singleton.class和Singleton$.class。
/// Singleton.java |
懒汉模式的单例。内行的看代码,不必多说。