Scala对象加载
我想建立一个工厂。我的应用程序中只能有一个此工厂的实例。我的工厂在创建第一个MyObject之前需要做一些准备,只有在那时。还有比这更好的方法吗Scala对象加载,scala,object,design-patterns,factory,Scala,Object,Design Patterns,Factory,我想建立一个工厂。我的应用程序中只能有一个此工厂的实例。我的工厂在创建第一个MyObject之前需要做一些准备,只有在那时。还有比这更好的方法吗 object MyObjectFactory { private var isApplied:Boolean = false def apply() = { if(!isApplied) { isApplied = true; onLoad }
object MyObjectFactory {
private var isApplied:Boolean = false
def apply() = {
if(!isApplied) {
isApplied = true;
onLoad
}
//do something
new MyObject
}
def onLoad {
//prepare environment
}
}
对象是惰性创建的,因此您可以将onLoad逻辑放入构造函数中。它将在第一次使用时执行,而不仅仅是导入
scala> object Factory {
| onLoad()
| def apply() = "new object"
| def onLoad() = println("onload")
| }
defined object Factory
// no onLoad triggered yet
scala> Factory()
onload
res0: String = new object
// onLoad was triggered
scala> Factory()
res1: String = new object
// onLoad was not triggered
对象是惰性创建的,因此您可以将onLoad逻辑放入构造函数中。它将在第一次使用时执行,而不仅仅是导入
scala> object Factory {
| onLoad()
| def apply() = "new object"
| def onLoad() = println("onload")
| }
defined object Factory
// no onLoad triggered yet
scala> Factory()
onload
res0: String = new object
// onLoad was triggered
scala> Factory()
res1: String = new object
// onLoad was not triggered