005 Laura.SqlForever历史遗留 的 架构思想缺陷

我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异:

Laura.WinFramework:             

导航菜单:

>导航栏+右键菜单(MenuStripItemBase)

>工具栏(ToolStripItemBase)

子窗体(ChildForm)

>系统子窗体(MainChildForm)

>文档子窗体(DocumentForm)

插件覆盖设计

>同名键值 插件,相互覆盖;

>对不完善 插件事件,后期 改写覆盖;

Laura.XtraFramework:      

导航菜单:

>导航栏+工具栏(BarItemInfoBase)

>右键菜单(MenuStripItemBase)

>遗留工具栏(ToolStripItemBase)

子窗体(ChildForm)

>取消了 系统子窗体(没时间研究 DevExpress 的 系统子窗体 的 扩展方式)

>文档子窗体(ChildForm)

插件覆盖设计

>同名键值 插件,相互覆盖;

>对不完善 插件事件,后期 改写覆盖;

工具栏,导航栏,右键菜单 遗留的设计问题

遗留下来的 工具栏 存在设计问题:

>新版工具栏 以特性中 TriggerType 的 设计思想 判定 所服务窗体;

>遗留工具栏 以 Must,CanUse 函数 的 设计思想 判断 所服务窗体;

>新版 设计思想 可能 更好一些;

遗留下来的 右键菜单 存在设计问题:

>DevExpress控件库 好像 不支持 右键菜单 —— 于是 右键菜单 沿用了 之前;

>右键菜单 也是 Must,CanUse 函数 的 设计思想 —— 可能 设计思想 也不是 很好;

工具栏最大的设计BUG:

>前后 历次版本,工具栏 以 “主工具栏”,“副工具栏” 两个为主;

>所有 子窗体 全部使用 “副工具栏”;

>而 之前的 Must 函数,即为:扩展的存在,只认逻辑(逻辑不严,则 扩展可能就 依附了错误窗体);

>而 现行 TriggerType 思想,即为:扩展的存在,只认类型,不认逻辑;

>现在 思想的优势 就是 扩展的目标明确:但是 所有子窗体 公用一个 工具栏 —— 这就是一个设计问题;

>最好的设计,或许应该是:

>每个扩展通过TriggerType    针对        特定类型子窗体;

>每个子窗体                        针对        各自工具栏;

子窗体 遗留的设计问题

取消了系统子窗体

>对这个 概念 的取消,是最错误的决定;

>系统子窗体 这个 概念,拿 VS2010为例,指的是:“解决方案资源管理器”,“属性”,“工具箱”,“服务器资源管理器” 这些窗体。

>作者 确实 没有时间了,作者 无法抽出 时间 完善设计思想了:

>一个月时间 既要学 Android,WebGL;

>还要 看 经济,婚姻,大政 方面的几本书籍;

>还有一些 记忆经历 没有 画成图画;

>总有面试官说:智商高的人往往不懂欣赏生活美好。

>总有面试官说:智商高的人情商低。

>看吧,为了面试,各种准备工作,把自己折磨得 头都大了。

>最重要的是 除了已经总结 的 爱情,工作,经历,家族 等几十篇文章外,最后的一篇总结文章 还没有写。

 

最后

>Laura.WinFramework 和 Laura.XtraFramework 设计思想 虽然存在 BUG,但是 功能和插件 的扩展 却已经非常稳定 和 成熟。

>Laura.SqlForever 本身 只不过是 作者 的一个 业余练手项目,作者对其 没有任何 后期战略期望。

>Laura.SqlForever 的存在,只是为了证明 另外一个半成品项目 的存在。

Ps.   Laura.SqlForever 和 Laura.XtraFramework 一并开源;

任何 个人或企业 都可以 无偿  剪切、复制、删除、修改 获得的 Laura.SqlForever 的 源码副本;

当然,Laura.DbSchema 这个程序集中,作者 整理了 不少 数据库相关的 函数;

如果 整个 Laura.SqlForever 源码 能给 您带来些许的参考价值,烦请 各位在下载 源码之余,点个 “赞”咯!

舒小龙

2014-02-13 01:10

最新文章

  1. WebView中实现文件下载功能
  2. 移动开发js库Zepto.js应用详解
  3. ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG
  4. HDU 5758 Explorer Bo(树形DP)
  5. C# 创建、部署和调用WebService的简单示例
  6. SpringMVC 监听文件上传进度
  7. Java开发笔记(十一)常见的数学函数
  8. Android 通过反射获取DatePicker 中的控件,并改变其颜色
  9. redis远程连接报错记录
  10. js判断浏览器的类型,动态调整div布局
  11. C/C++ 动态存储分配 malloc calloc realloc函数的用法与区别
  12. CentOS7查看systemctl 控制的服务的相关配置
  13. UVA-1572
  14. Eclipse配置问题
  15. POJ 1258 Agri-Net(Prim算法求解MST)
  16. Java IO的应用之实现大文件复制
  17. Cadence 5141 下TSMC 05U工艺库安装
  18. Windows下Python IDLE设置
  19. servlet 和 threadlocal 与 web容器(理解threadlocal)
  20. oracle函数学习_根据用户id获取用户角色

热门文章

  1. bzoj1547 周末晚会
  2. STL--multiset用法
  3. java中的单例模式与静态类
  4. CMake入门实战
  5. tomcat7支持https配置
  6. RabbitMQ windows本地安装
  7. 【SAP HANA】新建表以及操作数据(3)
  8. Spring 系列之Spring常用注解总结
  9. java基础系列之ConcurrentHashMap源码分析(基于jdk1.8)
  10. 阿里微服务架构下分布式事务解决方案-GTS