我使用延迟初始化方法创建了一个Singleton类。这就是getInstance方法是同步的。但是,如果不改变设计模式,有一种方法可以创建Singleton类的多个实例。因为更改Singleton模式将需要进行大量的体系结构更改。请建议一种创建多个实例的方法。请帮助Java。
答案 0 :(得分:6)
Singleton patten意味着只允许一个实例。所以不存在创建多个实例的问题。
虽然有一些黑客和变通办法,如Serializing the Object and De Serializing
它或using different Class loaders
,但它又违反了为什么创建单一模式的基本原则。
答案 1 :(得分:3)
您希望拥有一个类的多个实例,这些实例只能设计一个实例。
你可以,但它不再是单身人士了。将其视为具有多个实例的正常对象,并取消限制。你如何做到这一点取决于你的用例。
答案 2 :(得分:3)
编辑:我没有将其添加为评论所需的声誉,因此将其添加为答案 - 正如评论中所指出的那样,它可能是重复的。
进行一些研究,你就拥有它:
<强>代码强>
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
方法使用反射做的事情。