我希望在整个应用程序生命周期中只有5个类的实例。我如何才能做到这一点?请提供示例代码,如果可能的话。
发布于 2010-07-02 17:18:47
因为单例需要使用枚举(参见"Effective Java"):
public enum FiveInstance {
INSTANCE1, INSTANCE2, INSTANCE3, INSTANCE4, INSTANCE5;
public void anyMethod() {}
}Greetz GHad
发布于 2010-07-02 17:11:50
工厂模式可以成为您的朋友。一个示例(虚构的,而不是threadsafe,因此非常简单)来说明这种方法:
public static MartiniFactory {
private static int olives = 100; // you asked for '5' but 100 is more realistic
// for this example.
public static Drink createMartini() throws OutOfOlivesException {
if (olives > 0) {
olives--;
return new Martini(new Gin(4), new Vermouth(1), new Olive());
else {
throw new OutOfOlivesException();
}
}
// forgot to mention, only the factory (=bar) is able to create Martinis, so:
private class Martini {
Martini(Ingredient... ingredients) {
// ...
}
// ....
}
}编辑
许可示例不太好-所以我将它移到了一个域中,该域期望由工厂创建的对象不会在没有注意到工厂的情况下被返回和销毁。酒吧不能创造马提尼时,没有剩下的橄榄,它肯定不想要饮料后,喝了;-)
编辑2,可以肯定的是,只有工厂可以创建实例(=Drinks)。(不能保证,添加的内部私有类满足此要求,手头没有IDE来进行快速测试。请随时评论或编辑)
发布于 2010-07-02 17:11:12
class Sample
{
private static int i = 0;
private Sample()
{
}
public static Sample CreateInstance()
{
if(i <5)
{
i++;
return new Sample();
}
else
throw new Exception("Can not create more then 5 instance of this class");
}
}https://stackoverflow.com/questions/3164379
复制相似问题