GUI进化--数据与界面分离
http://blog.csdn.net/doon/article/details/5946862
1。何谓数据和界面分离?
GUI,即Graphic User Interface,人机交换界面。连接两端:终端用户--内部逻辑。它关联到两个角色:使用者和开发者。
用户希望看到的是,一个一个的界面元素:窗口、按钮、输入框等等可视和可操作的元素;开发者希望看到的是数据,数字、字符串或者数组、表等数据结构。
传统的GUI,例如Gtk,Qt,Windows,甚至有Android等界面,基本上是把界面和数据混在一起的。一个输入框,它表示的是一个字符串(当然,也可以派生出一个数字输入框),一个list框保存的是一个字符串列表等。
从开发者的角度看,必然先得到这个对象,才能读取数据。
但是,如果我们深入思考,开发者无非希望得到一些数据而已,不关心数据是以何种风湿展示的。对这些数据进行分类,可以发现,其格式可能非常有限,如基本的数据类型有数字型和字符串型;基本的数据保存方式有:表型(包括数组、各种链表等),树形等结构。
当然,根据领域的不同,还有很多区分,如,数字型可以进步细化为整数、实数,以及货币类型等和现实应用相关的类型。这些类型都是对数字型加以特定条件的约束而定义的。
这些基本的类型,可以和多种GUI的元素绑定,如数字型,可以和标签组件、输入框等绑定;而表型则可以和list等控件绑定。
这样,我们就可以把整个划分为两部分:
1。数据部分:提供给开发者使用的接口,只和业务逻辑相关,和如何展示无关
2。现实部分:展示给用户的,它可以使用各种效果,却不影响业务逻辑的变化。
2。为什么要做这样的分离?
做这样的分离,其实有很多好处:
1。界面编程会变得很简单,因为开发者只要学会有限的数据类型就可以了。
2。是为了解放界面编程,更好的实现界面的可视化。我们都知道,一个界面元素(widget或者控件),它的编程很困难,需要定义良好的接口,这种接口实际上要提供给很多方面使用,如
1) 提供给开发者使用
2) 提供给特定的工具使用,让它生成界面的描述资源
而一个界面元素开发完成后,往往觉得不够美观,不能适应用户的需求,往往需要做很多定制,甚至重新开发。往往事倍功半。
那么,把数据分离出后,数据的接口将标准化,而界面元素不必费尽心机的制定界面接口了。实际上,接口可能只是为了给特定工具使用了。
3。界面和数据分离,其实可以让界面的渲染和数据的存储脱离,可以实现界面后台渲染。这对界面的丰富度和响应时间都是质的飞跃。
界面可以更加从容的实现界面的诸多特效。
而且稳定性也会大幅度的增加。
3。如何实现?
界面和数据分离,关键制定界面数据的交换方式。这是框架所需要的。
在以后的讨论中,我考虑类似服务器和客户端的模式,通过定制一系列的协议来理清它们之间的关系。
GUI进化--数据与界面分离的更多相关文章
- Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准
Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准 1. 界面gui方面的前后端分离重大意义1 2. 业务逻辑也适当的迁移js化1 3. 常用分离方法2 3.1. 页面 ...
- Jmeter(七)Jmeter脚本优化(数据与脚本分离)
午休时间再来记一记,嗯..回顾着使用Jmeter的历程,想着日常都会用到的一些功能.一些组件:敲定了本篇的主题----------是的.脚本优化. 说起脚本优化,为什么要优化?又怎么优化?是个永恒的话 ...
- 转载-使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
JUnit 是被广泛应用的 Java 单元测试框架,但是它没有很好的提供参数化测试的支持,很多测试人员不得不把测试数据写在程序里或者通过其它方法实现数据与代码的分离,在后续的修改和维护上有诸多限制和不 ...
- Win7下使Users数据与程序分离
大家知道,数据是用户最大的财富,但Windows系统默认的模式是将所有软件都安装在C盘,在Windows XP时代,数据文件夹会放在Document And Setting 目录下,在Win7时代,数 ...
- C++彩色数据流动界面
一个数据流动界面 #include <windows.h> #include <time.h> #include <cstdio> #include <str ...
- 一种数据与逻辑分离的Python单元测试工具
一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...
- ArcGIS API for JavaScript 入门教程[3] 你看得到:数据与视图分离
这篇开始正式讲API. 数据和视图分离不是什么奇怪的事情了,这是一个著名的设计--数据与视图分开. 转载注明出处,博客园/CSDN/B站:秋意正寒. 目录:https://www.cnblogs.co ...
- 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...
- adminMongo:mongoDB node GUI(mongoDB图形化界面)
adminMongo:mongoDB node GUI(mongoDB图形化界面) 获取项目项目 克隆:git clone https://github.com/mrvautin/adminMongo ...
随机推荐
- java 中判断字符串相等
今天写Java代码时遇到一个问题,就是关于判断两个字符串是否相等的问题.(刚尝试用SSH框架) 在大多编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的 ...
- html实现点击图片放大功能
话不多说,直接上代码 <html> <head> <style> .over {position: fixed; left:0; top:0; width:100% ...
- HDU1059 【DP·二进制数优化】
题意: 有6种不同价值的物品,然后问你能不能分成两半使得两堆价值相等: 思路: 一共有20000*6=120000 多的价值, 总共背包有20000个,价值最大是120000,看看能不能DP到valu ...
- 51nod1640 【最小生成树】
题意: 在一副图中,搞N-1条边,使得每个点都相连, 有多种可能的情况,所以求一种使得其中n-1条边的最大是所有可能的最小,然后并保证连接的n-1条边的权值总和最大 思路: 一开始没有看清题意,随便写 ...
- Window 10 Alt Tap 切换窗口,设置成Windows 7风格
升级了Windows 10 以后,切换窗口非常的难受.新版的窗口切换的图标变成了窗口预览了,这总让我一瞬间找不到要去的窗口,所以我打算切换成Windows 7 的小图标风格. Windows + R ...
- app发布证书、真机调试证书、测试证书、推送证书详细过程
原文网址: http://www.cnblogs.com/cxbblog/p/4028159.html 一:发布证书 遵旨:哪个开发者的哪台电脑要发布哪个app (这句话可以多读几遍) 通过上边的遵旨 ...
- 对单片机C语言的一些误用和总结
在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了.我们是不是在写程序的时候错误很多就算编译通过了也达不到 ...
- 证书重复冲突问题:Command /usr/bin/codesign failed with exit code 1
打开钥匙串 查看是否有两个identifier为相同 的证书,显然导证书的时候不知道怎么把证书导进了系统帐号,并且还重复了.把重复的证书删除就行了.
- [題解]luogu_P1613跑路(最短路/倍增)
首先要知道不能跑最短路,因為只有整2^k才能一秒到達,和倍增有關 所以我們想知道任意兩點間能否存在一條2^k長度的路徑,數據很小,可以考慮floyd 把倍增和floyd結合起來考慮發現如果i到k,k到 ...
- Codeforces Round #390 (Div. 2) D
All our characters have hobbies. The same is true for Fedor. He enjoys shopping in the neighboring s ...