Com*_*ler 1 design-patterns factory scala object
我想实施一个工厂.在我的应用程序中只有一个这个工厂的实例.我的工厂需要在创建第一个MyObject之前做一些准备,然后才开始.有没有更好的方法来做到这一点
object MyObjectFactory {
private var isApplied:Boolean = false
def apply() = {
if(!isApplied) {
isApplied = true;
onLoad
}
//do something
new MyObject
}
def onLoad {
//prepare environment
}
}
Run Code Online (Sandbox Code Playgroud)
objects是懒惰创建的,因此您可以将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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |