基础UI框架设计

我主沉浮中,有一个含权量公式的概念,着实是新奇,仅凭此一着,此剧便可长盛不衰。

在设计UI框架时,可以借鉴此的概念,将代码划分为“块块上的代码”和“条条上的代码”。这种划分方法能够使框架的结构更加清晰,功能更加明确。

块块上的代码

这些代码模块通常是应用程序的各个独立部分,负责具体的功能和用户界面部分。它们可以通过依赖注入来实现,即谁使用,谁创建,谁提供,谁实现。

块块上的代码:菜单、启动加载、侧边栏、任务栏、视图区,工具栏,状态栏,插件系统,用户管理,工程管理,设置面板,数据视图,报表生成,更新,通知系统,性能监控

条条上的代码

这些代码模块通常是应用程序的全局功能,提供支持和增强应用程序的整体功能。它们往往是一个模块,并通过对外的接口来供各个部分调用。

条条上的代码: 主题,语言,热键,日志,用户权限,网络通信,异常与错误,数据持久化,图形编辑器,用户提示,消息窗口,MsSQL,MQTT, 某个单独的单例功能,定时任务,下载模块。

有些部分会是双重管辖,即使条条上的,也是块块上的。

一些条条上的代码,是被封装在库里的,比如 log4net ,里面包含完整的日志框架结构,我们可以是现在菜单栏中,也可以实现在设置面板中,如果需要持久化,我们要把配置参数持久化写入到文件中。

主题模块也是,nuget上许多的UI库都自己实现过,如果我们直接使用UI库,自己只需要在对映的模块实现管理即可,但如果我们要调度多个UI库,那么我们自己实现一套管理UI样式的模块,并且将调用的库的细节隐藏住。

语言模块是C# 有原生提供的,但是情况一样,如果用,块块上的逻辑需要自己实现。但同样的,我们也可以用实现主题模块的逻辑,改成软件在运行中可更新。

热键模块,我找了几个nuget上实现的dll,感觉实现出的效果都不够好,自己实现的话,Widnows API是提供了全局的逻辑,窗口的逻辑可以自己捕捉键盘事件实现。 实现的最好的,其实是VSCode这个级别的编译器,每一个功能不仅仅是动态添加,还是动态配置,还可以修改,还有多种系统情况下的预设。

一些块块上的代码,比如任务栏,这个地方可以显示某些控件的状态,但同样的,也有可能有需要持久化的配置选项,比如某些显示,某些不显示之类的。

又比如说插件模块,在基类提供之后,通过反射和管理对映的dll 。 逻辑又能和更新的逻辑复用。

比如项目自定义的模块,。

当然也并不绝对, 条条上的代码,对内实现也可以是块块的。 比如多套UI的实现,封装成UI库之后,放在插件中,依赖加载,又比如语言包的实现。

微信的小程序其实属于典型的块块上的代码,他只是创建和调用,并不负责实现,实现由每个开发者自己负责。

这也是为什么大家都想要作生态。不仅要你贡献,还要吃你一口。但话回来,推广生态花的钱,不是个体可以承担的。这也是说初期,技术大于一切,中期推广,后期运营。