这是Groovy实现Singleton模式的一个缺陷吗?

时间:2012-03-08 06:31:11

标签: groovy singleton

在不使用Metaclass的情况下直接实现Singleton模式:

class A{
    static final instance = new A()
    private A(){}

    static getInstance(){return instance}
} 

为什么私有构造函数不被groovy尊重?虽然可以直观地告诉它它是一个查看模式的单例,但与java不同,这样的实现不会限制程序员使用此类范围之外的new A()创建此类的新实例。那么这不应该被视为其实施中的缺陷吗?

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码替换上面的代码:

@Singleton
class A{
} 

并通过以下方式访问单例实例:

A singleton = A.instance

答案 1 :(得分:1)

这是当前Groovy实现中的一个错误,因此在Groovy中没有什么是私有的。看看它的JIRA issue。我最近也写了a short article