带你读《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

相关文章
|
9月前
|
Web App开发 移动开发 前端开发
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(1)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(1)
|
9月前
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(8)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(8)
|
9月前
|
存储 iOS开发 MacOS
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)
|
9月前
|
缓存 小程序 前端开发
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(5)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(5)
|
9月前
|
JavaScript Android开发 C++
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(3)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(3)
|
9月前
|
开发框架 开发工具 Windows
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(1)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(1)
|
9月前
|
C++
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)
|
9月前
|
C++
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(10)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(10)
|
9月前
|
XML 数据格式 C++
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(3)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(3)
|
9月前
|
ARouter 微服务 Windows
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(2)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(2)