zoukankan      html  css  js  c++  java
  • [WPF] [AMindMap] 开发手记6 (Map基本结构与节点间通信)

    上回说了基本的建模,这次,就把实现了的各个部分加以说明。

    Map的基本结构

    image

    Map内大概就是这几个基本的东西吧,Node的列表,Node之间连接的列表,比之前考虑多的就是一个RootNode,想来想去,我还是保留了这个树结构,在并不增加内存成本的情况下,我非常愿意,同时采用多种数据结构保存数据,因为不同的数据结构会带来不同的便利。NewNode方法包揽了创建新节点的业务。

    需要指出的是,作为渐进式开发,在保证后续功能的扩展前提之下,尽可能的简单,我感觉是非常必要的。下面,让我来完成Link的设计,你就看出来我的设计的扩展能力了。

    强大的扩展--Link

    之前在一篇号外中简单描述了,ALine的实现(请参考 WPF 之 自定义Shape

    image

    我只能说,这个Link类,太简单了。

    我在MainWindow中同样复制了一段Xaml,就是放置节点ANode的那一段。

    这样,我的主工作窗口,就被分层处理了。

    image

    经过简单的绑定,Link层完成了,这就是架构的扩展能力。

    Node之间的通信

    这是一个很关键的话题,父子之间的通信是很广泛的。在这个项目中,由于节点是树结构和列表结构,所以,我很方便的就获得了通信方式,采用简单的事件通知,即可实现诸如 移动(Move)等的操作,加上几行代码到Node类中。

    image

    运行结果

    image

    总结
    这几天我始终在思考,程序的扩展性,可能不用等到客户提出新的需求时才体现,在渐进式开发中,功能的扩展式开发,让可扩展性架构有了极强的用武之地。
  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/allofalan/p/2465905.html
Copyright © 2011-2022 走看看