HarmonyOS鸿蒙Next MVP架构
HarmonyOS鸿蒙Next MVP架构
MVP架构
1.MVC
-
Model(数据提供者)-View(控件)-Controller(活动)
-
缺点在于:
- activity里面的控件必须关心业务和逻辑,才知道自己怎么展示
- 所有的逻辑都在activity中
2.MVP
-
Model-View-Presenter
-
优势:
- 使用 MVP 之后,Activity 就能瘦身许多了,基本上只有 FindView、SetListener 以及 Init 的代码。其他的就是对 Presenter 的调用,还有对 View接口 的实现。这种情形下阅读代码就容易多了。
- 而且你只要看 Presenter 的接口,就能明白这个模块都有哪些业务,很快就能定位到具体代码。Activity 变得容易看懂,容易维护,以后要调整业务、删减功能也就变得简单许多。
- 方便进行单元测试
- 避免内存泄露:APP发生 OOM 的最大原因就是出现内存泄露造成APP的内存不够用,而造成内存泄露的两大原因之一就是 Activity泄露(Activity Leak)(另一个原因是 Bitmap泄露(Bitmap Leak)),java虚拟机对于被引用的对象由于还可能被调用所以不会回收,而MVP模式可以分离异步任务对引用
OOM:out of memory
-
步骤:
- Model->提供数据的
- View->UI逻辑(拿到Presenter层的结果进行UI更新)
- Presenter->业务逻辑(对数据进行判断得到结果,把结果给到View层,让他进行UI更新)
-
Activity调用Present执行业务逻辑,Presenter层调用View层执行UI逻辑(所以Presenter需要以View接口作为参数设置主构造函数),具体的UI逻辑又由实现了View接口的 Activity去重写
3.MVVM
-
ViewModel 负责调用 Model(可以称之为数据源),拿到结果后,更新自身。而 View 与 ViewModel 双向绑定,所以 View 就会自动更新。 这就是 MVVM 大致的思想
-
View 与 ViewModel 双向绑定是通过
Data Binding
库和ViewModel
组件实现的
更多关于HarmonyOS鸿蒙Next MVP架构的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS Next MVP架构是基于鸿蒙系统设计的应用架构模式,主要分为Model、View、Presenter三层。Model负责数据处理,View负责UI展示,Presenter作为中间层协调Model和View的交互。该架构通过解耦视图逻辑和业务逻辑,提升代码可维护性。鸿蒙Next的MVP适配了Ability、FA/PA等核心机制,支持分布式能力调用。View层使用ArkUI声明式开发,Model层可调用鸿蒙原生API(如分布式数据管理),Presenter通过异步通信连接两端。
更多关于HarmonyOS鸿蒙Next MVP架构的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中采用MVP架构确实能带来诸多优势。关于您提到的MVP实现要点,我补充几点HarmonyOS特有的注意事项:
-
在HarmonyOS中,View层建议使用Ability作为实现载体,通过AbilitySlice来组织UI组件。Presenter应持有View接口引用,但要注意使用WeakReference避免内存泄漏。
-
Model层的数据获取可以使用HarmonyOS的DataAbilityHelper来访问本地/分布式数据,或通过@ohos.net.http发起网络请求。
-
对于Presenter的单元测试,可以利用HarmonyOS Test框架,结合Mockito等工具模拟View和Model层。
-
相比Android,HarmonyOS的UI更新机制有所不同,建议在View接口实现中使用TaskDispatcher进行UI线程调度。
-
内存管理方面,HarmonyOS的Ability生命周期与Android Activity不同,需要特别注意Presenter在Ability切换时的资源释放。
MVP架构在HarmonyOS中的核心价值不变,但具体实现需要适配鸿蒙的分布式能力特性。建议将业务逻辑尽量下沉到Presenter,保持AbilitySlice的轻量化。