Compose 三层结构设计规范1(基于Slot API)

Compose 三层结构设计规范(基于Slot API)

结构层:简洁,不包含业务资源和默认值

中间层:尽可能复用参数,写常用到的默认值

调用层:只写差异的数据

一、三层结构角色定位与默认值策略

1. 结构层 (ProfileCardLayout):"纯骨架"

  • 默认值策略:尽量不给业务默认值。
  • 核心职责:仅定义"坑位"位置、层级(Z-axis)堆叠规则、基础物理规则(内边距padding、间距spacing)。
  • 参数处理规则
    • Modifier:默认赋值为 Modifier
    • Slot (Composable 类型):默认赋值为 null
    • 禁止写死任何 R.drawableR.color 等业务资源。

2. 中间层/业务层 (UserInfoCard):"配置员"

  • 默认值策略:大胆定义业务默认值。
  • 核心职责:将结构层抽象为具体业务组件,定义卡片默认背景、默认图标等业务级UI规则。
  • 参数处理规则
    • IconResbackgroundImageTextStyle 等参数赋予具体业务默认值。
    • 实现调用层在90%场景下仅需传递 titledetails 等核心数据。

3. 调用层 (Screen/Page):"使用者"

  • 默认值策略:仅传递"差异化"数据。
  • 核心职责:仅关注具体业务数据(如显示"陈奕迅"或"周杰伦"),不处理UI配置细节。
  • 核心优势:代码简洁,业务逻辑清晰,避免被UI配置细节淹没。

二、三层结构参数处理示例对比

维度 结构层 (ProfileCardLayout) 中间层 (UserInfoCard) 调用层 (UserInfoCard)
背景图 backgroundImage: @Composable? = null bg: Int = R.drawable.ic_default (不传,用默认)
图标 leftContent: @Composable icon: IconRes = IconRes(R.id.vip) icon = IconRes(R.id.svip)
内边距 写死在 Row 上 (Layout 规定) 不涉及 不涉及

三、三层结构设计的核心优势

  1. 易于维护:UI视觉改版时(如所有卡片内边距从16dp改为20dp),仅需修改结构层一处即可生效。
  2. 视觉统一:业务元素改版时(如VIP图标样式统一更换),仅需修改中间层的默认值。
  3. 开发效率:编写新页面时,仅需传递1-2个差异化参数,即可完成卡片UI渲染。

四、结构层代码示例

kotlin 复制代码
@Composable
fun ProfileCardLayout(
    modifier: Modifier = Modifier,
    backgroundImage: (@Composable () -> Unit)? = null,
    // 若左侧内容是核心,可不设 null,强制传入
    leftContent: @Composable () -> Unit, 
    rightContent: (@Composable () -> Unit)? = null,
    overlayContent: (@Composable () -> Unit)? = null
) {
    Box(modifier = modifier) {
        // 背景层
        backgroundImage?.invoke()

        Row(
            modifier = Modifier
                .fillMaxSize()
                .padding(...) // 布局定义的内边距(结构层规定)
        ) {
            // 给左侧 Box 设置 weight,避免右侧内容被挤压
            Box(modifier = Modifier.weight(1f)) {
                leftContent()
            }
            
            rightContent?.let {
                Box { it() }
            }
        }
        // ... overlay
    }
}

五、业务层补充说明

UserInfoCard 中间层已包含 backgroundImage 默认值,符合设计规范。针对 details 文字过长的处理规则(自动换行/单行显示加省略号),建议在中间层定义为业务规则。

总结

  1. 结构层仅负责布局规则,不包含任何业务默认值和资源;中间层承接业务默认配置,调用层仅传差异化数据。
  2. 三层结构设计可实现单点维护、视觉统一、高效开发的核心目标。
  3. 文字超长显示规则属于业务规则,建议在中间层(UserInfoCard)统一定义。
相关推荐
bug攻城狮1 天前
SpringBoot 脚手架搭建指南:从零构建企业级开发框架
java·spring boot·后端·架构·系统架构·设计规范
Watermelo6172 天前
【前端实战】构建 Vue 全局错误处理体系,实现业务与错误的清晰解耦
前端·javascript·vue.js·信息可视化·性能优化·前端框架·设计规范
KANGBboy2 天前
埋点设计规范
设计规范
小湘西3 天前
图的分类大全
设计规范
九硕智慧建筑一体化厂家4 天前
DDC:看似普通的存在,在楼宇自控系统中却主宰智能建筑高效运行?
大数据·运维·人工智能·网络协议·制造·设计规范
天天睡大觉4 天前
SH/T 3009-2013 石油化工可燃性气体排放系统设计规范
设计规范·sh∕t 3009-2013·可燃性气体排放系统设计规范
电子科技圈6 天前
从工具到平台:如何化解跨架构时代的工程开发和管理难题
人工智能·设计模式·架构·编辑器·软件工程·软件构建·设计规范
xu_wenming6 天前
跨文件数据共享模式:通过静态全局变量与访问函数结合
嵌入式硬件·mcu·物联网·设计规范
电子科技圈6 天前
IAR扩展嵌入式开发平台,推出面向安全关键型应用的长期支持(LTS)服务
嵌入式硬件·安全·设计模式·软件工程·代码规范·设计规范·代码复审