Цель состоит в том, чтобы обеспечить двойную связь между объектами, т. Е. Если я свяжу объект A с объектом B, то объект B должен быть автоматически связан с объектом A.
Одно из потенциальных применений такой системы можетмоделировать неориентированный граф.
Я придумал только такую глупую реализацию:
class ObjA
{
public _addLink (object Obj)
{
<add code to store the single link to Obj>
}
public addLink (object Obj)
{
_addLink(Obj);
Obj._addLink(this);
}
}
class ObjB
{
public _addLink (object Obj)
{
<add code to store the single link to Obj>
}
public addLink (object Obj)
{
_addLink(Obj);
Obj._addLink(this);
}
}
Тогда я могу написать
ObjA.addLink(ObjB)
Но проблема в том, что вв этом случае я также могу сделать
ObjA._addLink(ObjB)
И система ломается, т.е. ObjB не получает ссылку на ObjA.И я не могу сделать _addLink приватным, так как он не будет виден с другого объекта.
Какой лучший способ добиться этого?