01-three-layer-architecture
01 — HarmonyOS 多设备短视频应用的三层架构设计与实践一、引言在多设备应用开发中如何高效组织代码、实现业务复用是核心挑战。本系列基于 多设备短视频Multi-Short-Video 项目该系统覆盖手表、直板机、折叠屏、平板、电脑和智慧屏六种设备形态采用 HarmonyOS 三层架构进行代码组织。二、三层架构概览项目采用products → features → common的依赖关系自顶向下引用┌──────────────────────────────────────────────────┐ │ products 层产品定制层 │ │ default(手机/平板) │ pc(电脑) │ tv(智慧屏) │ wearable(手表) │ ├──────────────────────────────────────────────────┤ │ features 层基础特性层 │ │ multishortvideoadaptivevideo(视频播放) │ │ multishortvideocomment(评论区) │ │ multishortvideoindividual(个人作品页) │ ├──────────────────────────────────────────────────┤ │ common 层公共能力层 │ │ multishortvideobase(公共组件/常量/工具类/数据模型) │ └──────────────────────────────────────────────────┘2.1 common 层 — 公共能力层定义在common/multishortvideobase模块中提供公共组件MSVTabs、MSVTextIcon、MSVEmptyComponent常量定义CommonConstantsAVPlayer 状态常量、百分比常量等数据模型MSVDataModelTabs 数据模型工具类WindowUtil窗口管理、Logger日志、WidthBreakpointType断点工具、AdaptiveImmersion沉浸式算法2.2 features 层 — 基础特性层三个独立业务模块被 products 层统一调用模块功能关键文件multishortvideoadaptivevideo视频播放AdaptiveAVPlayer.ets,AdaptiveVideo.etsmultishortvideocomment评论区Comment.ets,CommentViewModel.etsmultishortvideoindividual个人作品页Individual.ets,Works.ets,IndividualByRouter.ets2.3 products 层 — 产品定制层四个 HAP 包作为独立入口各自处理设备特有的 UI 差异HAP设备入口文件导航模式default手机、平板products/default/.../Index.etsMSVTabs Navigationpc电脑products/pc/.../Index.etsSideBarContainertv智慧屏products/tv/.../Index.etsTVTabs Navigationwearable手表products/wearable/.../Index.etsMSVTabs精简版三、模块依赖配置在build-profile.json5中定义 8 个模块通过srcPath映射到各层目录{ modules: [ { name: multishortvideodefaultsample, srcPath: ./products/default }, { name: multishortvideopcsample, srcPath: ./products/pc }, { name: multishortvideotvsample, srcPath: ./products/tv }, { name: multishortvideowearablesample, srcPath: ./products/wearable }, { name: multishortvideobase, srcPath: ./common/multishortvideobase }, { name: multishortvideoadaptivevideo, srcPath: ./features/multishortvideoadaptivevideo }, { name: multishortvideoindividual, srcPath: ./features/multishortvideoindividual }, { name: multishortvideocomment, srcPath: ./features/multishortvideocomment }, ] }各模块的oh-package.json5中声明依赖如 features 层依赖 common 层products 层依赖 features 层。四、最佳实践总结按层次拆分模块common 层放通用工具features 层放业务逻辑products 层放设备差异化代码单向依赖products → features → common禁止反向依赖模块粒度控制每个 HAP 包独立编译避免不必要的依赖膨胀统一数据模型公共数据模型集中在 common 层避免跨模块重复定义

相关新闻

私募信贷行业趋势:技术驱动与风险管控

私募信贷行业趋势:技术驱动与风险管控

1. 项目概述:私募信贷行业的未来图景私募信贷(Private Credit)作为另类投资领域的重要分支,在过去十年间经历了爆发式增长。根据Preqin数据,全球私募信贷资产管理规模已突破1.2万亿美元,成为传统银行贷款和…

2026/7/23 5:02:08 阅读更多 →
C++模板进阶:从基础到实战,掌握泛型编程核心技巧

C++模板进阶:从基础到实战,掌握泛型编程核心技巧

1. 项目概述&#xff1a;从“能用”到“精通”的C模板之旅如果你已经写过一些C模板代码&#xff0c;比如一个简单的std::vector<T>或者自己定义的template <typename T> T max(T a, T b)&#xff0c;那么恭喜你&#xff0c;你已经踏入了C泛型编程的大门。但很多时候…

2026/7/24 6:23:44 阅读更多 →
ImGui.NET跨平台部署实战:Windows/Linux/macOS全攻略

ImGui.NET跨平台部署实战:Windows/Linux/macOS全攻略

1. 项目概述&#xff1a;为什么ImGui.NET的多平台部署如此重要&#xff1f; 如果你正在用C#开发桌面应用&#xff0c;尤其是游戏编辑器、调试工具或者需要高性能实时交互的界面&#xff0c;那么ImGui.NET这个名字你肯定不会陌生。它是一个.NET平台下的Immediate Mode GUI&#…

2026/7/23 5:01:08 阅读更多 →

最新新闻

Unity地形旋转全攻略:一键处理高度图、纹理与植被数据同步

Unity地形旋转全攻略:一键处理高度图、纹理与植被数据同步

1. 项目概述&#xff1a;为什么我们需要旋转整个Terrain&#xff1f;在Unity3D的地形编辑和场景搭建中&#xff0c;我们经常会遇到一个看似简单却异常棘手的需求&#xff1a;将整个Terrain地形&#xff0c;连同它上面生长的树木、铺设的贴图、散布的细节草和岩石&#xff0c;一…

2026/7/24 6:23:05 阅读更多 →
多模态问答技术解析与应用实践

多模态问答技术解析与应用实践

1. 多模态模型问答技术解析上周在调试一个客户项目时&#xff0c;遇到个典型场景&#xff1a;用户上传的产品图片需要自动生成规格说明。传统单模态方案要么用CV识别物体&#xff0c;再用NLP生成文本&#xff0c;流程割裂导致信息丢失严重。这让我重新审视了多模态问答技术的价…

2026/7/24 6:23:05 阅读更多 →
基于YOLOv10的实时火焰检测系统设计与实现

基于YOLOv10的实时火焰检测系统设计与实现

1. 项目概述这个基于YOLOv10的火焰检测系统是我最近完成的一个计算机视觉项目&#xff0c;它能够通过摄像头、视频文件或静态图像实时检测火焰和火灾。作为一名长期从事目标检测开发的工程师&#xff0c;我发现现有的火焰检测方案要么精度不足&#xff0c;要么速度太慢&#xf…

2026/7/24 6:23:05 阅读更多 →
大语言模型系统指令设计原理与工程实践

大语言模型系统指令设计原理与工程实践

1. 系统指令(System Prompt)的本质解析在AI交互领域&#xff0c;系统指令(System Prompt)是对话初始阶段植入的"基因代码"&#xff0c;它从根本上定义了AI助手的身份定位和行为范式。不同于用户直接输入的操作指令(User Prompt)&#xff0c;系统指令更像是在对话开始…

2026/7/24 6:23:05 阅读更多 →
深度学习在音乐生成与编曲自动化中的应用实践

深度学习在音乐生成与编曲自动化中的应用实践

1. 项目概述作为一名长期从事音乐科技开发的工程师&#xff0c;我最近完成了一个融合深度学习与音乐处理的综合项目。这个系统能够实现从旋律生成到完整编曲的全流程自动化处理&#xff0c;同时集成了多种音乐格式的转换功能。在实际应用中&#xff0c;这套工具已经帮助独立音乐…

2026/7/24 6:23:05 阅读更多 →
深度学习神经网络调参实战技巧与优化策略

深度学习神经网络调参实战技巧与优化策略

1. 神经网络调参实战指南在深度学习项目中&#xff0c;调参往往是最耗时却又最关键的一环。我见过太多团队在数据准备和模型架构上花费大量精力&#xff0c;最后却因为调参不当导致前功尽弃。今天分享的这套调参方法论&#xff0c;是我从50多个实际项目中总结出的实战经验&…

2026/7/24 6:22:05 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化&#xff0c;核心特色&#xff1a;三维 X/Y/Z 三轴空间&#xff0c;所有散点分布在 0~10 立方体空间内&#xff1b;散点使用径向渐变实现立体 3D 圆球质感&#xff1b;支持鼠标 / 触屏拖拽画布&#xff0c;…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls&#xff1a;进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值&#xff0c;并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好&#xff0c;我是一名编程初学者&#xff0c;同时这也是我编程学习之路上的第一篇博客。在这里&#xff0c;我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手&#xff0c;目前在学习c语言&#xff0c;我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻