我的问题是:我需要一种方法来确保只有一个给定的类可以实例化另一个。我不想让另一个成为嵌套的内部类或类似的东西。我该怎么做呢?我一时忘记了。

最佳答案

将构造函数设为私有(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() );
     }

     ...
}

顺便说一句,我对这种设计持怀疑态度。对我来说似乎太耦合了。

10-08 03:42