代码之家  ›  专栏  ›  技术社区  ›  Pratik Deoghare

如何同步三个类?

  •  3
  • Pratik Deoghare  · 技术社区  · 14 年前
    class Foo
    {
        Bar b;
        List<Foo> Neighbours;
    }
    
    class Bar
    {
        Spam s;
        List<Bar> Neighbours;
    }
    
    class Spam
    {
        List<string> Neighbours; 
    }
    

    每个班级都有 AddNeighbour , RemoveNeighbour

    用户可以随机添加/删除任何类的邻居。

    同步 .

    我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Paolo    14 年前

    选项一-有Foo呼叫酒吧时,它的更新和酒吧呼叫垃圾邮件。这将导致紧密耦合的对象,你可能还需要有垃圾邮件回叫酒吧,其中回叫Foo同步在另一个方向,yuk。

    选项二-有一个类,观察三个对象中的每一个,并在其中一个对象发生变化时更新其他对象(外部同步器)

    选项三-修改设计并将数据存储在一个类中,并实现三个接口,以列表形式返回数据<巴>,列表<Foo>或列表<字符串>。这样,您可以选择存储一次数据(并根据请求进行转换),或者更轻松地保持对象的三个内部列表同步。

    选项四-有一个更新的公共数据模型,每个对象都会观察并从数据模型中同步它自己的内部列表

    编辑 -在您评论这是三个图之后,观察者模式可能是最好的方法。有一个单一的公共数据模型,每个模型都在观察并适应其服务的图形所需的特定类型。

        2
  •  2
  •   DannyLane    14 年前

    一种方法是使用 Observer pattern

    你可以让每个物体向观察者注册它自己,

    HTH公司