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

『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷的更多相关文章

  1. 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件

    004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的    窗口 > 关闭所有文档    这个导航栏: 在 任何程序集,任何命名空间,任 ...

  2. 『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)

    001 Laura.SqlForever架构的基础(Laura.XtraFramework 的变迁之路) Laura.XtraFramework 到底是 做什么的? Laura.XtraFramewo ...

  3. 『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

     003 Laura.SqlForever如何扩展 兼容更多数据库引擎 数据库引擎插件 在 界面上的体现 导航窗体 的 工具栏 中的 引擎下拉列表        导航窗体 的 树形控件 中的 引擎主节 ...

  4. 『练手』手写一个独立Json算法 JsonHelper

    背景: > 一直使用 Newtonsoft.Json.dll 也算挺稳定的. > 但这个框架也挺闹心的: > 1.影响编译失败:https://www.cnblogs.com/zih ...

  5. 『练手』通过注册表 获取 VS 和 SQLServer 文件路径

    获取任意 VS 和 SQLServer 的 磁盘安装目录. 背景需求:如果磁盘电脑安装了 VS 或者 SQLServer 则 认定这台计算机 的使用者 是一名 软件研发人员,则让程序 以最高权限运行. ...

  6. 『集群』005 Slithice 基于 集群 的 自动容错

    Slithice 基于 集群 的 自动容错 Slithice容错概述: Slithice 支持 非集群 的 独立服务端: 支持 基于 中央服务器 的 集群服务端: 支持 基于 自定义配置 的 集群服务 ...

  7. 『开源』仿SQLServer山寨一个 跨数据库客户端

    002 Laura.SqlForever项目简单介绍 相关文章 <『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)> <『练 ...

  8. [日推荐] 『闲聊助手』人工智能小程序,仅此一款!-极乐商店store.dreawer.com

    肾phone的siri有用过吗?小编无聊时就撩一下她!但有个问题就是要是没有肾phone在身边怎么撩???现在有伙伴@wx_Volcano_Li76 开发一款小程序,可以等同于siri,想什么时候撩就 ...

  9. 关于『进击的Markdown』:第三弹

    关于『进击的Markdown』:第三弹 建议缩放90%食用 我与神明画押,赌这弹markdown又双叒叕拖稿了 %%%Markdown!我的CSDN编辑器崩了呜呜呜 各路英雄豪杰,大家好!  我们要开 ...

随机推荐

  1. 某校高中生利用Python,巧妙获取考试成绩,看到成绩后无言以对!

    Python是非常有吸引力的编程语言,学习Python的不是帅哥就是美女.为什么这么说呢?因为我和我的女朋友都是学习Python认识的,小编肯定是帅哥,不用去怀疑,而且我眼光特高. 给大伙讲一个故事, ...

  2. GO语言.树莓派.环境安装和测试

    Go是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.为了方便搜索和识别,有时会将其称为Golang 记录一下如何在树莓派上安装语言环境 第一步: 下载安装包 http ...

  3. java的Junit的用法(转发)

    初级https://blog.csdn.net/andycpp/article/details/1327147/ 中级https://blog.csdn.net/andycpp/article/det ...

  4. MVC下 把数据库中的byte[]值保存成图片,并显示在view页面

    MVC下 把数据库中的byte[]值转成图片,并显示在view页面 controller中的action方法 //显示图片[AllowAnonymous]public ActionResult Sho ...

  5. 【bzoj 1407】【Noi2002】Savage

    Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...

  6. Quartz定时调度在Web中的应用

    1.在数据库中建一个job表和job日志表 job表

  7. 深度学习之循环神经网络(RNN)

    循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,适合用于处理视频.语音.文本等与时序相关的问题.在循环神经网络中,神经元不但可以接收其他神经元 ...

  8. JAVA基础第三章-类与对象、抽象类、接口

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  9. 用Python学分析 - 正态分布

    正态分布(Normal Distribution) 1.正态分布是一种连续分布,其函数可以在实线上的任何地方取值. 2.正态分布由两个参数描述:分布的平均值μ和方差σ2 . 3.正态分布的取值可以从负 ...

  10. (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198/213/337)

    题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...