实例化时如何强制一对一对象引用?

戴夫克罗曼

假设我有一个名为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

谢谢。

泰勒·赫克斯(Taylor Hx)

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

修改为您的用例(假设Apple之间是一对一的关系AppleHolder),它将类似于:

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,而是调用static方法:AppleHolder.getAppleHolder(apple);

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实例化时如何强制一对一对象引用?

来自分类Dev

一对一对象成员为空

来自分类Dev

如何强制powerpivot关系对象一对一?

来自分类Dev

Parse.com-承诺-返回父对象以及其他一对一对象作为属性

来自分类Dev

Parse.com-承诺-返回父对象以及其他一对一对象作为属性

来自分类Dev

ActionListener()引用同一对象

来自分类Dev

如何通过Laravel中的hasMany关系对一对一多态关系列求和?

来自分类Dev

一对一地“对象引用了未保存的瞬态实例”

来自分类Dev

将数组追加到列表项(一对一对)

来自分类Dev

RabbitMQ可以用于一对一对话吗?

来自分类Dev

在scala中按值和名称=>一对一对应

来自分类Dev

“与文件系统中文件的一对一对应关系”

来自分类Dev

如何创建唯一对象?

来自分类Dev

如何在没有多个实例变量引用同一对象的情况下实现继承?

来自分类Dev

如何在没有多个实例变量引用同一对象的情况下实现继承?

来自分类Dev

EF保存同一对象的多个实例

来自分类Dev

Linq合并来自同一对象实例的数组

来自分类Dev

添加同一对象的多个实例

来自分类Dev

杰克逊:引用同一对象

来自分类Dev

对同一对象的多个智能指针引用

来自分类Dev

在Java中销毁对同一对象的多个引用

来自分类Dev

杰克逊:引用同一对象

来自分类Dev

获取位于同一对象中的函数的引用

来自分类Dev

如何使用quicksort对一对整数的结构进行排序?

来自分类Dev

如何在Android Room中加入同一对象的多个实例?

来自分类Dev

如何访问同一对象内的对象值

来自分类Dev

对一对多关系的困惑Rails

来自分类Dev

一对一关系与强制参与1:站点

来自分类Dev

如何模拟更新同一对象的函数/方法?

Related 相关文章

热门标签

归档