如何为Singleton类创建多个实例

时间:2013-12-26 15:09:09

标签: java object design-patterns singleton instance

我使用延迟初始化方法创建了一个Singleton类。这就是getInstance方法是同步的。但是,如果不改变设计模式,有一种方法可以创建Singleton类的多个实例。因为更改Singleton模式将需要进行大量的体系结构更改。请建议一种创建多个实例的方法。请帮助Java。

4 个答案:

答案 0 :(得分:6)

Singleton patten意味着只允许一个实例。所以不存在创建多个实例的问题。

虽然有一些黑客和变通办法,如Serializing the Object and De Serializing它或using different Class loaders,但它又违反了为什么创建单一模式的基本原则。

答案 1 :(得分:3)

您希望拥有一个类的多个实例,这些实例只能设计一个实例。

你可以,但它不再是单身人士了。将其视为具有多个实例的正常对象,并取消限制。你如何做到这一点取决于你的用例。

答案 2 :(得分:3)

编辑:我没有将其添加为评论所需的声誉,因此将其添加为答案 - 正如评论中所指出的那样,它可能是重复的。

进行一些研究,你就拥有它:

参考this link

<强>代码

class MySingleton {
    private MySingleton() {
    }
}

class Test {
    public void test() throws Exception {
        Constructor<MySingleton> constructor = MySingleton.class.getConstructor();
        constructor.setAccessible(true);
        MySingleton otherSingleton = constructor.newInstance();
    }
}

答案 3 :(得分:0)

这取决于班级行为。如果实例封装得很好,我猜你可以重新创建getInstance方法使用反射做的事情。