我的问题是:我需要一种方法来确保只有一个给定的类可以实例化另一个。我不想让另一个成为嵌套的内部类或类似的东西。我该怎么做呢?我一时忘记了。
最佳答案
将构造函数设为私有(private)。创建一个静态工厂方法,该方法采用允许访问的类的实例。让工厂方法创建一个合适的对象,并在允许访问创建的对象的对象上使用 settor 来为该类提供创建的副本。
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() );
}
...
}
顺便说一句,我对这种设计持怀疑态度。对我来说似乎太耦合了。