带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(7)

简介: 带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(7)

带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(6)https://developer.aliyun.com/article/1340321?groupCode=taobaotech


mvp分层结构

为了更好的维护和复用ui组件,并满足跨端诉求,我们的ui组件都采用mvp模式进行开发。

 

ui组件除了遵从prgcom的标准之外,还需遵守额外的约束:

  1. 每个UI界面内部,分为p-v两层,其中p层负责逻辑控制,v层负责输入输出。
  2. 每个UI界面,开放一个IxxxUI接口,IxxxUI代表UI界面整体,内部只包含一个GetPresenter()方法。
  3. p层开放一个IxxxPresenter接口,外部调用IxxxPresenter提供的方法来操作这个UI界面。
  4. p层定义了v层需实现的输入输出接口IxxxUIDelegate,这个接口由v层代理实现,只在p层可见。
  5. v层只负责实现渲染和输入用户操作。

 

 

 

image.png

 

 

 

这种设计的好处,主要在于:

  1. 所有的逻辑由p定义和控制,p层由c++实现,可以实现跨多端,mac和windows统一
  2. view被收敛在内部,仅实现了输入输出接口,非常轻量。view相关的对象(如QT对象)不会扩散。
  3. 替换view简单,只需重新实现UIDelegate接口。
  4. 可以通过实现UIDelegate接口的mock,在p层做单元测试

 

生命周期管理                                                                   ui组件的生命周期比一般组件复杂,因为ui组件有一部分对象的生命周期是ui框架来管理的。

买旺跨端框架,ui选型是Qt框架,ui对象生命周期由Qt内核管理,而组件生命周期是prg内核管理。

当创建ui对象后,组件保存了ui对象的指针,以便和ui对象做业务交互,但ui对象的生命周期是qt内部管理的。  因此,需要建立一种机制,当Qt销毁ui对象的时候,需要通知到我们的组件这个ui对象已经被销毁了。

创建和调用流程:

 

image.png

 

 

 

销毁流程:

image.png

 

image.png


带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(8)https://developer.aliyun.com/article/1340319?groupCode=taobaotech

相关文章
|
7月前
|
传感器 机器学习/深度学习 算法
UWB-IMU、UWB定位对比研究(Matlab代码实现)
UWB-IMU、UWB定位对比研究(Matlab代码实现)
312 2
|
移动开发 开发者 UED
HTML5 语义元素详解
HTML5引入了诸多语义元素
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习与自然语言处理的最新进展
探索深度学习与自然语言处理的最新进展
509 4
|
存储 NoSQL 算法
Redis中的BigKey问题:排查与解决思路
Redis中的BigKey问题:排查与解决思路
898 0
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
缓存 NoSQL 应用服务中间件
Redis实战篇
Redis实战篇
|
移动开发 JavaScript API
HTML5 拖放详解
HTML5 的拖放功能增强了网页的互动性和用户友好性,允许用户通过拖动操作移动网页元素。其核心包括拖动源和放置目标,并提供了 `draggable` 属性及多个事件(如 `dragstart`、`dragover` 和 `drop`)来实现这一功能。示例代码展示了如何使用这些 API 创建一个简单的拖放组件,通过设置样式和监听事件来提升用户体验。在实际应用中,需注意样式提示和浏览器兼容性测试。
|
监控 IDE PHP
php xdebug的配置、调试、跟踪、调优、分析
php xdebug的配置、调试、跟踪、调优、分析
|
机器学习/深度学习 人工智能 搜索推荐
人工智能在医疗诊断中的应用与优势
人工智能在医疗诊断中的应用正为医疗领域带来革命性的改变。通过影像诊断、病理学分析和辅助决策等领域的应用,人工智能为医生提供了更准确、高效的诊断工具。然而,在解决数据隐私、可解释性和数据不平衡等挑战方面,我们还有很多工作要做。未来,随着技术的不断进步,人工智能将在医疗诊断领域发挥越来越重要的作用,为患者提供更好的医疗服务和治疗方案。
1098 1
|
人工智能 Windows
Portraiture4.0最新版本安装下载及功能介绍
作为PS的插件,被众多照片后期高手使用,评价颇高。主要原因在于它操作简便、磨皮效果好、软件很小,特别是它可以自动感应皮肤区域磨皮,只对皮肤作用更令人称奇的是:Portraiture 磨皮能保留下细小的毛孔和皮肤质感,这是其它很多磨皮美白软件所不具备的!Portraiture这款老牌的一键磨皮修图插件终于更新啦!最近更新Portraiture 4.0版本!新版本光影处理更强大,支持PS和LR软件!!
1151 0

热门文章

最新文章