分类
树是一种常见的 ui 组件,在桌面以及 web 中都经常看到,常见的表现形式有
简单树:
多选树:
如何设计?
针对树的两种主要分类,这次主要讨论 DRY ,怎么能把重复的功能拆成独立的单元而最终又能完美的整合?我的答案是多继承:
组成部分
BaseNode : 最基本的树节点,类似 dom 树节点,记录该节点的子节点和父节点,可以添加删除子节点以及特有的选中操作,展开和收缩操作。具体通过onClick来响应用户点击。
CheckNode: 继承自 BaseNode,但是可以记录更多的选中状态和展现形式:子节点和自身都选中(fullCheck),子节点没有全部选中(partCheck),子节点和自身都没选中(none)。具体通过覆盖 BaseNode 的 onClick 响应用户点击来设置状态.
TreeEvtDelegate: 功能类,用于事件代理,可代理树根节点下的所有子节点的事件并在合适的子节点上执行对应的事件处理器
TreeStateMgr : 功能类,缓存树根节点的所有子节点,便于快速获取,以及记录树级别的状态:树的当前选择元素集合,树是否显示根节点,...
Tree: 简单树,实际上用继承于普通节点的根节点来表示一棵树,只不过它可以代理子节点的事件(具体参考事件代理的好处)以及具备树节点的一些全局状态.
CheckTree:同 Tree 类似,只不过它通过继承 CheckTree 可以具备更多的状态。
最后通过多继承, Tree 以及 CheckTree 的功能完全分散到抽象父类上并可以完全互相共享,树本身只是一个空壳(命名) 而已。
对多继承的想法
Tree 包括基础框架以及其他一些组件已经完成不少时间了,但也在一直犹豫,多继承是否合适,是否会加剧复杂化,能否在未来多变的需求下易于维护,但感谢《松本行弘的程序世界》,书中 ruby 发明人详细讨论了多继承,解释了为何动态语言中的 mixin 是一种可控,切实的多继承方式,那么如果再进一步增强对功能类初始化过程的控制,也就具备了更强的表达能力,这很可能就是未来的趋势.
- 大小: 3.7 KB
- 大小: 19.6 KB
- 大小: 7.9 KB
分享到:
相关推荐
c++技能树 C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的。。。。。
9.3.2基于标准输入输出的IO操作 296 9.3.3文件读写及随机访问 297 9.3.4Java的文件管理 297 9.4 Java网络通信 297 9.4.1网络基础知识及Java网络模型 298 9.4.2无连接的数据报 298 9.4.3 Java访问网络资源 298
因此,笔者提出一种多DSP+FPGA的硬件设计结构,使用DSP取代FPGA完成核心算法,而仅用一个FPGA进行管理和控制。该硬件设计成本较低。1基于双正交叠式变换的低复杂度图像压缩方法1.1双正交重叠变换的快速整数实现在...
16.3 ADT二叉查找树基于链表的实现 458 16.3.1 ADT二叉查找树操作的算法 458 16.3.2 BinarySearchTree类 469 16.4 在文件中保存二叉查找树 471 16.5 树排序 474 16.6 一般树 474 C++片段6 迭代器 479 C6.1 ...
第3篇 基于对象的程序设计 第8章 类和对象 8.1 面向对象程序设计方法概述 8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计的特点 8.1.3 类和对象的作用 8.1.4 面向对象的软件开发 8.2 类的声明和对象的定义...
将变异设计语义添加至可移植结构,当发生分割、合并和变换的变异设计行为时,对其抛弃、保持或复制等处理,实现变异设计语义随变异设计行为的继承与变迁;再通过检索变异设计语义不断获得待变异结构,将离散的设计...
6.2基于属性文法的处理方法 6.2.1 依赖图 6.2.2树遍历的属性计算方法 6.2.3 一遍扫描的处理方法 6.2.4抽象语法树 6.3 S-属性文法的自下而上计算 6.4 L-属性文法和自顶向下翻译 6.4.1 翻译模式 6.4.2自顶...
基于.NET平台的标准模架系统集先进的CAD技术,网络数据访问技术,以及模架设计的相关技术为一体,通过用户在网络客户端和服务器端之间的交互过程,利用后台智能CAD系统,根据用户选定的尺寸参数表,自动生成完用户需要的...
为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...
入口继承基类的Controller,即可完成基础的增删改查操作常用数据结构的封装与基础的CRUD实现(左右值预遍历树、普通树等)统一的认证入口,方便的安全认证扩展,可实现多种方式的认证,且支持表单与接口灵活的权限...
第3篇 基于对象的程序设计 第8章 类和对象 8.1 面向对象程序设计方法概述 8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计的特点 8.1.3 类和对象的作用 8.1.4 面向对象的软件开发 8.2 类的声明和对象的定义...
基于 CS 1.0-CS 2.2 主题的 Leetcode 问题链接。 由课程助理星光罗梅罗创建。 挑战来自 Basic、Master 和 Stretch 变体。 变量 数据类型和操作 打印和输入 职能 条件句 伪代码和列表 循环 读取错误和调试 文件输入/...
(3) 掌握Visual C#.NET类的创建(成员,方法,属性),类的继承,类的多态性及类的方法的重载。 1.3 实验内容 题目: 基于控制台应用程序,设计一个二叉树的实验工具,要求可以支持以下功能: (1) 利用随机函数,...
行为树框架是经典设计模式结构的基础,通常与 AI(人工智能)领域相关,主要用于游戏行业。 这些框架是针对具有复杂逻辑基础结构并具有与神经网络类似的基于节点的结构的系统的解决方案,但返回离散布尔响应,而不是...
7.6.9 树视图控件(Tree Control) 7.6.10 列表视图控件(List Control) 7.6.11 标签控件(Tab Control) 7.7 ActiveX控件 7.8 制作ActiveX控件 7.8.1 制作ActiveX控件的方法 7.8.2 ActiveX控件创建实例 第8章 图形...
7.6.9 树视图控件(Tree Control) 7.6.10 列表视图控件(List Control) 7.6.11 标签控件(Tab Control) 7.7 ActiveX控件 7.8 制作ActiveX控件 7.8.1 制作ActiveX控件的方法 7.8.2 ActiveX控件创建实例 第8章 图形...
所以我想要一个 Go 模板,它具备以下特性:原生的 Golang 语法支持模板植入代码支持模板继承和 include高性能语法简单、优雅自动编译基于以上,实现了 Hero 模板引擎,用过 nodejs EJS 模板引擎的童鞋应该很容易上手...
第12章 案例研究:用DOM设计选择列表 12.1 经典的感觉 12.2 构建更好的选择列表 12.3 策略?我们不需要臭哄哄的策略 12.3.1 相关的文件 12.3.2 FauxSelect对象 12.3.3 开始创建...
9.2 C++的基于对象设计: 模板与设计 203 9.3 面向对象设计 204 9.4 泛型开发与初级StdC库 204 第10章 数据逻辑与STL库 204 10.1 仿函数 204 10.2 iterater 204 10.3 adapter 205 第11章 高级代码逻辑与LOKI库 205 ...