singletonbugtest.groovy
来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· GROOVY 代码 · 共 99 行
GROOVY
99 行
// TODO: GROOVY-435
class SingletonBugTest extends GroovyTestCase {
public void testPrivate() {
def x = SingletonBugPrivate.getInstance()
def y = SingletonBugPrivate.getInstance()
println "Get one private instance: $x"
println "Get another private instance: $y"
assert x == y
println(SingletonBugPrivateSecond.getInstanceSecond())
println(SingletonBugPrivateSecond.doTestSecond())
// shouldFail { println(SingletonBugPrivateSecond.getInstanceSecond()) }
// shouldFail { println(SingletonBugPrivateSecond.doTestSecond()) }
}
public void testProtected() {
def x = SingletonBugProtected.getInstance()
def y = SingletonBugProtected.getInstance()
println "Get one protected instance: $x"
println "Get another protected instance: $y"
assert x == y
println(SingletonBugProtectedSecond.getInstanceSecond())
println(SingletonBugProtectedSecond.doTestSecond())
x = SingletonBugProtectedSecond.getInstanceSecond()
y = SingletonBugProtectedSecond.doTestSecond()
assert x != y
}
}
class SingletonBugPrivate {
private static SingletonBugPrivate instance1 = null
private SingletonBugPrivate() {
}
static SingletonBugPrivate getInstance() {
if (instance1 == null)
instance1 = new SingletonBugPrivate()
return instance1
}
// private static SingletonBugPrivate getInstance2() {
// if (instance1 == null)
// instance1 = new SingletonBugPrivate()
// return instance1
// }
}
class SingletonBugProtected {
private static SingletonBugProtected instance1 = null
protected SingletonBugProtected() {
}
static SingletonBugProtected getInstance() {
if (instance1 == null)
instance1 = new SingletonBugProtected()
return instance1
}
// private static SingletonBugProtected getInstance2() {
// if (instance1 == null)
// instance1 = new SingletonBugProtected()
// return instance1
// }
}
class SingletonBugPrivateSecond extends SingletonBugPrivate {
static SingletonBugPrivate getInstanceSecond() {
return doTestSecond()
}
static SingletonBugPrivate doTestSecond() {
return new SingletonBugPrivate()
}
}
class SingletonBugProtectedSecond extends SingletonBugProtected {
static SingletonBugProtected getInstanceSecond() {
return doTestSecond()
}
static SingletonBugProtected doTestSecond() {
return new SingletonBugProtected()
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?