(三二)HarmonyOS Design 的应用架构设计:常用架构与实践
HarmonyOS Design 的应用架构设计:常用架构与实践
引言
在 HarmonyOS 生态蓬勃发展的当下,合理的应用架构设计对于构建高效、稳定且易于维护的应用至关重要。优秀的应用架构不仅能提升应用的性能和响应速度,还能降低开发成本、提高开发效率。本文将介绍 HarmonyOS 中常用的应用架构,并结合实践案例给出代码示例,帮助开发者更好地理解和运用这些架构。
常用的应用架构
MVC(Model - View - Controller)架构 原理:MVC 架构将应用分为三个主要部分,即模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据和业务逻辑;视图负责展示数据给用户;控制器负责接收用户的输入,并根据输入调用模型进行相应的处理,然后更新视图。 优点:职责分离清晰,便于代码的维护和测试;可以同时支持多个视图,提高代码的复用性。 缺点:控制器可能会变得过于庞大,导致代码的可维护性下降;视图和模型之间的耦合度较高。 MVP(Model - View - Presenter)架构 原理:MVP 架构是 MVC 架构的一种演变,它将控制器换成了 Presenter。Presenter 负责处理视图和模型之间的交互,它从模型获取数据,并将数据处理后传递给视图进行展示。视图和模型之间没有直接的交互,而是通过 Presenter 进行沟通。 优点:进一步降低了视图和模型之间的耦合度,提高了代码的可测试性;Presenter 可以独立于视图进行测试。 缺点:Presenter 中可能会包含大量的业务逻辑,导致 Presenter 变得复杂。
MVVM(Model - View - ViewModel)架构
原理:MVVM 架构引入了 ViewModel 层,它通过数据绑定和命令绑定机制,实现了视图和模型之间的自动同步。ViewModel 负责处理视图的业务逻辑和数据转换,视图只需要关注界面的展示。 优点:实现了视图和模型的完全分离,提高了代码的可维护性和可测试性;数据绑定机制减少了手动更新视图的代码量。 缺点:数据绑定机制可能会增加应用的内存开销;对于简单的应用,使用 MVVM 架构可能会显得过于复杂。
架构设计的实践
MVC 架构实践
以下是一个简单的 HarmonyOS 应用使用 MVC 架构的示例,实现一个简单的计算器功能。
// 模型层:处理计算逻辑 class CalculatorModel { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } } // 视图层:展示界面 import ohos.aafwk.ability.AbilitySlice; import ohos.agp.components.Button; import ohos.agp.components.Text; import ohos.agp.components.TextField; public class CalculatorView extends AbilitySlice { private TextField num1Field; private TextField num2Field; private Button addButton; private Button subtractButton; private Text resultText; @Override public void onStart(ohos.aafwk.content.Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_calculator); num1Field = (TextField) findComponentById(ResourceTable.Id_num1_field); num2Field = (TextField) findComponentById(ResourceTable.Id_num2_field); addButton = (Button) findComponentById(ResourceTable.Id_add_button); subtractButton = (Button) findComponentById(ResourceTable.Id_subtract_button); resultText = (Text) findComponentById(ResourceTable.Id_result_text); } public String getNum1() { return num1Field.getText(); } public String getNum2() { return num2Field.getText(); } public void setResult(String result) { resultText.setText(result); } public void setAddButtonClickListener(ohos.agp.components.Component.ClickedListener listener) { addButton.setClickedListener(listener); } public void setSubtractButtonClickListener(ohos.agp.components.Component.ClickedListener listener) { subtractButton.setClickedListener(listener); } } // 控制器层:处理用户输入和调用模型 public class CalculatorController { private CalculatorModel model; private CalculatorView view; public CalculatorController(CalculatorModel model, CalculatorView view) { this.model = model; this.view = view; view.setAddButtonClickListener(new ohos.agp.components.Component.ClickedListener() { @Override public void onClick(ohos.agp.components.Component component) { int num1 = Integer.parseInt(view.getNum1()); int num2 = Integer.parseInt(view.getNum2()); int result = model.add(num1, num2); view.setResult(String.valueOf(result)); } }); view.setSubtractButtonClickListener(new ohos.agp.components.Component.ClickedListener() { @Override public void onClick(ohos.agp.components.Component component) { int num1 = Integer.parseInt(view.getNum1()); int num2 = Integer.parseInt(view.getNum2()); int result = model.subtract(num1, num2); view.setResult(String.valueOf(result)); } }); } }
MVVM 架构实践
以下是一个使用 MVVM 架构实现的简单列表展示示例,使用了 HarmonyOS 的Observable和Observer机制。
// 模型层:数据类 import ohos.data.orm.OrmContext; import ohos.data.rdb.RdbStore; import ohos.data.rdb.StoreConfig; class Item { private String name; public Item(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // ViewModel层:处理业务逻辑和数据转换 import ohos.event.notification.NotificationHelper; import ohos.event.notification.NotificationRequest; import ohos.miscservices.pasteboard.PasteData; import ohos.miscservices.pasteboard.Pasteboard; import ohos.miscservices.pasteboard.SystemPasteboard; import ohos.rpc.RemoteException; import java.util.ArrayList; import java.util.List; class ItemViewModel { private List itemList; public ItemViewModel() { itemList = new ArrayList<>(); itemList.add(new Item("Item 1")); itemList.add(new Item("Item 2")); itemList.add(new Item("Item 3")); } public List getItemList() { return itemList; } } // 视图层:展示界面 import ohos.aafwk.ability.AbilitySlice; import ohos.agp.components.Component; import ohos.agp.components.DirectionalLayout; import ohos.agp.components.Text; import java.util.List; public class ItemView extends AbilitySlice { private DirectionalLayout itemLayout; private ItemViewModel viewModel; @Override public void onStart(ohos.aafwk.content.Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_item); itemLayout = (DirectionalLayout) findComponentById(ResourceTable.Id_item_layout); viewModel = new ItemViewModel(); showItems(); } private void showItems() { List itemList = viewModel.getItemList(); for (Item item : itemList) { Text text = new Text(getContext()); text.setText(item.getName()); itemLayout.addComponent(text); } } }
总结
在 HarmonyOS 应用开发中,选择合适的应用架构对于项目的成功至关重要。MVC、MVP 和 MVVM 架构各有优缺点,开发者应根据项目的规模、复杂度和需求来选择合适的架构。通过合理的架构设计和实践,可以提高应用的开发效率、可维护性和性能,为用户带来更好的体验。
- 0回答
- 0粉丝
- 0关注
- (三二)ArkTS 企业级应用开发架构设计
- HarmonyOS 5应用分层模块化实践:从架构设计到多端部署
- 第三六课:HarmonyOS Next复杂应用架构设计指南:大型系统构建与模块化实践
- 58.Harmonyos NEXT 图片预览组件架构设计与实现原理
- 97.HarmonyOS NEXT跑马灯组件教程:基础概念与架构设计
- 105.HarmonyOS NEXT 跑马灯组件详解(一): 组件概述与架构设计
- (四五)HarmonyOS Design 的设计模式应用
- (五二)HarmonyOS Design 的材质设计应用
- HarmonyOS NEXT 小说阅读器总结篇之项目架构设计与技术栈分析
- (六六)HarmonyOS Design 的通知与消息设计
- 159.HarmonyOS NEXT系列教程之列表交换组件架构设计
- 一、HarmonyOS Next 开发者手册项目之项目架构设计
- HarmonyNext核心架构解析与高级应用开发实践
- 70.HarmonyOS NEXT PicturePreview组件深度剖析:从架构设计到核心代码实现
- 71.HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现