因此,我的问题是:我需要一种方法来确保只有一个给定的类可以实例化另一个。我不想让另一个嵌套的内部类或类似的愚蠢。我该怎么做呢?我一下子忘记了。
Daddy Warbox
问问题
1068 次
4 回答
8
私有静态内部类正是您想要的。没什么愚蠢的。
public class Creator {
private static class Created {
}
}
否则,您只能在包级别保护实例化。
public class Created {
Created() {
}
}
这仅使来自同一包的类可以访问构造函数。
于 2009-01-02T01:46:33.640 回答
1
您可以将要从实例化包中保护的类设为私有。
于 2009-01-02T01:45:26.200 回答
1
将构造函数设为私有。创建一个静态工厂方法,该方法采用允许访问的类的实例。让工厂方法创建一个合适的对象,并在允许访问创建的对象的对象上使用设置器,为该类提供创建的副本。
public class AllowedAccess
{
private SecureClass secure;
public setSecureClass( SecureClass secure )
{
this.secure = secure;
}
...
}
public class SecureClass
{
private SecureClass() {}
public static void Create( AllowedAccess allowed )
{
allowed.setSecureClass( new SecureClass() );
}
...
}
顺便说一句,我对这种设计持怀疑态度。对我来说似乎太耦合了。
于 2009-01-02T01:48:38.580 回答