c# - 如何同步三个类(class)?

标签 c# design-patterns oop

class Foo
{
    Bar b;
    List<Foo> Neighbours;
}

class Bar
{
    Spam s;
    List<Bar> Neighbours;
}

class Spam
{
    List<string> Neighbours; 
}

这些类中的每一个都有 AddNeighbourRemoveNeighbour 方法。

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

我希望这三个对象同步

我该怎么做?

最佳答案

选项一 - 在更新时让 Foo 调用 Bar,而 Bar 调用 Spam。这将导致紧密耦合的对象,您可能还需要让 Spam 回调到 Bar,后者回调到 Foo 以在另一个方向同步,yuk。

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

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

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

编辑 - 根据您的评论,这是针对三个图表的,观察者模式可能是执行此操作的最佳方式。有一个单一的通用数据模型,每个模型都在观察并适应其服务的图形所需的特定类型。

关于c# - 如何同步三个类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808795/

相关文章:

c# - 模拟从 IEnumerable<T> 继承的抽象类

c# - 如何在控制台应用程序中将列表打印为表格?

domain-driven-design - 面向服务的架构和领域驱动设计

javascript - 并发异步请求 - 跟踪必要的超时

oop - 如何使用 cfinclude 拆分组件并仍然使用继承?

c# - 命名空间 'Management' 中不存在类型或命名空间名称 'Microsoft.SqlServer' - SqlParser 和 VSTS 自动构建

c# - 在 linq to sql 中插入子记录后刷新实体

python - 使用 pandas 链接数据转换方法的设计模式

php 嵌套对象函数调用不起作用?

c# - 需要报价 : Preprocessor usage is bad OO practice