代码之家  ›  专栏  ›  技术社区  ›  snemarch

可观察树-哪些事件会发生?

  •  2
  • snemarch  · 技术社区  · 15 年前

    Composite 图案。显然,我不希望GUI和模型过于紧密地联系在一起,所以GUI应该是 Observer 而更改应该通过模型层完成。我正在使用C事件实现可观察的支持—到目前为止,非常好,而且我有一个工作系统。

    1. 你希望一棵可观察的树会产生哪些事件?不创建,不删除,不删除?
    2. 你能创造一个单一的吗 TreeChange 事件并将更改信息编码到 TreeChangeEventArgs
    3. NodeDeleting NodeDeleted ? 在不获取已删除节点作为参数的情况下, 节点删除 节点删除 事件 (可能)处理节点,但是抛出一个(至少在概念上)已删除的节点是否是一个好做法?
    4. 事件或递归 节点删除 对于子节点也是如此?单曲 NoteDeleted 我觉得不错,但也许有些案子我没有考虑过。
    5. 单个节点的更改,而不是树结构的更改。我想最好是通过观察单个节点来处理这个问题?(我目前正在节点类上使用INotifyPropertyChanged来处理这个问题)。
    6. 不,我不想用 Windows.Forms.TreeView 作为我的主要数据结构:)

    Service.Instance.AddNode(parentNode, "New node name") 服务类负责生成事件吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Gabriel Ščerbák    15 年前
    1. 当然,我会添加NodeChange,如果一个树没有在节点中存储值的能力,那它有什么用呢?其他事件取决于树应该支持什么,例如,对于自平衡树,可以使用noderoate事件等。绝对允许为将来的目的引入自定义事件。
    2. 取决于您的删除语义,例如,您可能希望删除单个节点并将其所有子节点连接到已删除节点的父节点。然而,对于复合结构,单个递归删除似乎更为合理。
    3. 你必须考虑节点和树之间的关系。我更喜欢节点的特殊事件,这将在需要时生成树事件。
    4. 我不是一个.Net的人,但是我总是考虑,如果现成的东西不能调整以满足您的需求。

    好处:我认为属于tree的行为应该在树中,为了改变它你有多态性和继承性,不要在OO系统中OO更有意义的地方使用结构设计。