class Foo
{
Bar b;
List<Foo> Neighbours;
}
class Bar
{
Spam s;
List<Bar> Neighbours;
}
class Spam
{
List<string> Neighbours;
}
每个类都有AddNeighbour
,RemoveNeighbour
方法。
用户可以随机添加/删除任何类中的邻居。
我希望这三个对象位于 sync 。
我该怎么做?
答案 0 :(得分:4)
选项一 - 让Foo在更新后调用Bar并调用Bar Spam。这将导致紧密耦合的对象,你可能还需要将垃圾邮件回调给Bar,它回调Foo以在另一个方向同步,yuk。
选项二 - 拥有一个观察三个对象中的每一个的类,并在一个对象发生更改时更新其他对象。 (外部同步器)
选项三 - 修改设计并将数据存储在一个类中,并实现三个接口,这些接口将数据作为List&lt; Bar&gt ;, List&lt; Foo&gt;返回。或列表&lt; string&gt;。这样,您可以选择存储数据一次(并按要求进行转换)或使对象的三个内部列表更容易同步。
选项四 - 拥有一个更新的公共数据模型,每个对象都会观察到它并从数据模型中同步它自己的内部列表
编辑 - 根据您的评论,这是针对三个图表,观察者模式可能是执行此操作的最佳方式。有一个共同的数据模型,每个模型都观察并适应其服务图所需的特定类型。
答案 1 :(得分:2)