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

    总结
    这几天我始终在思考,程序的扩展性,可能不用等到客户提出新的需求时才体现,在渐进式开发中,功能的扩展式开发,让可扩展性架构有了极强的用武之地。
  • 相关阅读:
    K8S 内部服务调用域名解析超时
    云原生服务网格istio 第二章
    云原生服务网格istio 第一章
    kubernetes权威指南 第4版 第十章节读书笔记
    Navicat Premium基本使用
    Mac安装SecureCRT
    zabbix监控ssl证书到期时间
    nginx 配置proxy_pass URL末尾加与不加/(斜线)的区别
    PyCharm 项目删除
    Pycharm问题:module 'pip' has no attribute 'main'
  • 原文地址:https://www.cnblogs.com/allofalan/p/2465905.html
Copyright © 2011-2022 走看看