假设我有一个名为apple的对象

Apple apple = new Apple();


我有一个名为AppleHolder的类,如下所示:

class AppleHolder{
   private Apple apple;

   public AppleHolder(Apple apple){
      this.apple = apple;
   }
}


Apple实例不能超过1个AppleHolder。但是,当然,当我这样做时:

AppleHolder appleHolder1 = new AppleHolder(apple);
AppleHolder appleHolder2 = new AppleHolder(apple);


这样,当apple只能有1个时,就好像有两个所有者。是否存在一种设计模式来代替return appleHolder1

谢谢。

最佳答案

我相信您正在寻找类似Singleton模式的东西,仅限制对象之间的关系而不是它们的实例化。

修改为您的用例(假定AppleAppleHolder之间是一对一的关系),它看起来像:

class Apple {
    private AppleHolder appleHolder;

    public AppleHolder getAppleHolder() {
        return this.appleHolder;
    }

    // Rest of class...
}

class AppleHolder {
    private Apple apple;

    private AppleHolder(Apple apple) {
        this.apple = apple;
    }

    public static AppleHolder getAppleHolder(Apple apple) {
        if(apple.getAppleHolder() != null) {
            return apple.getAppleHolder();
        } else {
            return new AppleHolder(apple);
        }
    }
}


在上面的代码中,一个Apple只能有一个AppleHolder,而AppleHolder只能有一个Apple

而不是调用AppleHolder的构造函数,而是调用静态方法:AppleHolder.getAppleHolder(apple);

如果提供的AppleHolder已经存在Apple,则返回该AppleHolderApple

否则,将创建并返回一个新的AppleHolder

09-16 04:09