BUIW 介绍

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6491808 在BUIW中采用了MVC的设计模式(图10-3),MVC(Model /View/Controller)是程序开发中经常使用的一种模式,它很好地实现了数据层与表示层的分离。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6491808

在BUIW中采用了MVC的设计模式(图10-3),MVC(Model /View/Controller)是程序开发中经常使用的一种模式,它很好地实现了数据层与表示层的分离。MVC把应用程序分为三种对象类型:模型,维护数据并提供数据访问方法;视图,绘制模型的部分数据或所有数据的可视图;控制器处理事件。视图事先会在模型中登记,当模型数据发生改变时,马上通知已向此模型登记的每个视图。视图从模型取得最新的数据并刷新自己。 

Widgets在互联网上是一种时髦的技术,而在这里,Widgets是一个插件式可扩展的UI组件框架,是窗口化的应用框架,并引入了容器的概念,实际上,容器是一类特殊的widget。
Model 提供了驱动widget内容的实际数据,管理Listener的注册行为,而并不关注数据的可视化表达。有点像STL,不同的model支持不同的数据类型例如链表,向量组等,也支持特定控件或接口的数据类型。当数据发生变化时,Model会向关注该数据的发起者发送通知。IModel是一个基础接口,其他的Model接口都派生于IModel接口, IValueModel,IArrayModel,IVectorModel,IInterfaceModel,IMenuModel和ITextModel等。
Widget是窗口上的小的控件,如文本框,图片框等,来完成一个Model中的数据表达,而不需要知道显示的位置,只需要知道内容和显示的区域。Widget 监听Model中数据的变化,按照开发者的需要来显示数据,可以不做显示处理,或者部分显示,甚至做到后台改变。Widget同时管理焦点和按键事件,IWidget是一个基础接口,其他的Widget接口都派生于IWidget接口,有ICheckWidget,I RadioWidget,IButtonWidget,IProgressWidget,ITextWidget,ISliderWidget和IWaitCursorWidget 等。
Container来管理一组widgets的位置和布局,控制Widgets在屏幕上显示的次序,通常一个widget 自身就可以成为一个Container。根据布局的原则,Container像堆栈一样管理Widget。Widget在其中由底向上存放,所以Widget被叠加的时候,在堆栈底层的Widget可能被隐蔽,屏幕中只显示堆栈顶层的Widget。也就是说,Container先画最底层的Widget,然后逐层向上实现屏幕显示。IContainer是一个基础接口,其他的Widget接口都派生于IWidget接口,有IPropContainert,IConstraintContainer,IXYContainer,ICardContainer和IDecorator等。一个decorator是一个特殊的container用来管理和修饰指定的 widget,通IDecorator可以实现BorderWidget,BlendWidget,ImageWidget,TabWidget,ScrollbarWidget,ScrollIndicatorWidget,ViewportWidget,TitleWidget,ListWidget,GridWidget和PickWidget等等。 
Form是针对页面显示的,有两类:RootForm和一般的Form。RootForm 预先实现了一般通用的屏幕布局,负责管理Form堆栈,为Forms定义了可视化元素,包括标题、背景和软健包括标题,软键按钮和背景,设定标题的区域,软键按钮的显示区域,一组form的客户区域,区别弹出对话框和手机的全屏显示,管理未处理的按键事件并分发给当前的form,而且,RootForm中的元素是可以被替换或删除。
Form同样包含标题,软键按钮和背景等显示元素,当显示元素的内容发生变化是发出相应的通知,获取当前Widget没有处理的事件。Form负责应用的逻辑,构建和放置Widgets,设置Model中的数据,处理应用的执行流程。IForm是一个基础接口,其他的Form接口都派生于IWidget接口,主要有ListForm,StaticForm和PopupForm。
目录
相关文章
|
JSON 算法 数据可视化
⚡Three.js-在场景中导入3D动画模型
⚡Three.js-在场景中导入3D动画模型
47173 4
⚡Three.js-在场景中导入3D动画模型
|
7月前
|
Java 索引
「LeetCode」141. 环形链表
「LeetCode」141. 环形链表
45 0
|
XML 网络协议 Java
SOAP接口对接
基于spring 框架下的soap接口对接
384 0
|
编解码 Prometheus Cloud Native
完全解读Prometheus查询
完全解读Prometheus查询
2182 0
完全解读Prometheus查询
|
Java Unix 编译器
看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了(二)
final 是 Java 中的关键字,它也是 Java 中很重要的一个关键字,final 修饰的类、方法、变量有不同的含义;finally 也是一个关键字,不过我们可以使用 finally 和其他关键字结合做一些组合操作;finalize 是一个不让人待见的方法,它是对象祖宗 Object 中的一个方法,finalize 机制现在已经不推荐使用了。本篇文章,cxuan 就带你从这三个关键字入手,带你从用法、应用、原理的角度带你深入浅出理解这三个关键字。
76 0
看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了(二)
|
Arthas 监控 Dubbo
案例分享 | dubbo 2.7.12 bug导致线上故障
最近某天的深夜,刚洗完澡就接到业务方打来电话,说他们的 dubbo 服务出故障了,要我协助排查一下。 电话里,询问了他们几点 是线上有损故障吗?——是 止损了吗?——止损了 有保留现场吗?——没有
248 0
案例分享 | dubbo 2.7.12 bug导致线上故障
|
存储 Cloud Native 关系型数据库
PolarDB-X的特点
PolarDB-X的特点
2019 0
|
弹性计算
关于使用阿里云ECS的体验
关于使用阿里云ECS云服务器的个人体验以及一些平时使用时遇到的问题和解决办法。
|
Java
【Java】内部类的定义
现在我们来学习新的知识点,关于内部类的描述,其实 顾名思义就是在类的内部有一个类,简称套娃类(个人观点)
117 0
【Java】内部类的定义
|
5G 芯片 SoC
骁龙875可能搭载Cortex X1,比865+快25%
骁龙875可能搭载Cortex X1,比865+快25%
164 0
骁龙875可能搭载Cortex X1,比865+快25%