管理具有相互引用的 ID 的对象? 中介模式?

问题描述

我有一个网络类,它存储有关对象的信息,这些对象也可能相互引用。对象也有继承自 Object 超类的子类(不在示例代码中)。

public class Network { 
   private Map<String Id,Object> idToObject; //registers all objects and their id
   private Map<Object,Object> objectToObject;
   private Map<ObjectSubclass> objectSubclas; //list of objects of one of the subclasses
}

public class Object{ 
   private String id; //required
   private Object object2; //optional
   private int relativePosition; //optional based on object2 
} 

对象有几种可能的引用关系和嵌套(未在示例代码中全部显示)。网络 idToObject 映射必须跟踪它持有的对象以及几个列表。对象直接相互引用是不是很糟糕?

实现接口或中介模式会更好(不确定这是不是中介模式?),如下所示:

public interface IdContainer
{
    String getId();
    void setId(String id);
    Set<IdRefContainer> getReference();

    Network getNetwork();
}

public interface IdRefContainer //For Objects which can reference an Object
{
    String getIdRef();
    void linkTo(IdContainer idc,int relativePosition);
    void unlink();
    
    int relativePosition();
    
    Network getNetwork();
}



public class Object implements IdContainer{ ...}
    
public class ObjectSubclass implements IdRefContainer{ ...}

public class Network { 
   private Map<String Id,IdContainer> idToObject; //registers all objects and their id
   private Map<IdContainer,IdContainer> objectToObject;
   private Map<ObjectSubclass> objectSubclas; //list of objects of one of the subclasses
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...