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/10/30 16:44:48 阅读更多 →
C++模板进阶:从基础到实战,掌握泛型编程核心技巧

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

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

2026/10/30 9:45:22 阅读更多 →
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/10/29 1:47:03 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻