[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

总结
这几天我始终在思考,程序的扩展性,可能不用等到客户提出新的需求时才体现,在渐进式开发中,功能的扩展式开发,让可扩展性架构有了极强的用武之地。
原文地址:https://www.cnblogs.com/allofalan/p/2465905.html