ComposeView 的上下游继承关系及相关类/接口分析

ComposeView 的上下游继承关系及相关类/接口分析

一、ComposeView 的完整继承层次结构

1. 上游继承链(从基类到ComposeView)

less 复制代码
BaseObject
├── AbstractBaseView (实现 IViewPublicApi, IModuleAccessor, IPagerId 接口)
│   └── DeclarativeBaseView
│       └── ViewContainer<A : ContainerAttr, E : Event>
│           └── ComposeView<A : ComposeAttr, E : ComposeEvent>
├── BaseEvent (实现 IEvent, IPagerId 接口)
│   └── Event
│       └── ComposeEvent
└── Props
    └── Attr (实现 IStyleAttr, ILayoutAttr 接口)
        └── ContainerAttr (实现 IContainerLayoutAttr, IEventCaptureAttr 接口)
            └── ComposeAttr

2. 各层核心功能职责

BaseObject
  • 所有对象的最基础父类,提供属性扩展和响应式监听机制
  • 核心功能:
    • extProps:动态扩展字段存储
    • bindValueChange():绑定表达式变化监听
    • unbindAllValueChange():移除所有绑定监听
AbstractBaseView
  • 继承 BaseObject 并实现以下接口:
    • IViewPublicApi:视图公共API接口
    • IModuleAccessor:模块访问器接口
    • IPagerId:持有pagerId的接口(已被 PagerScope 替代)
  • 核心功能:
    • 视图引用管理
    • Flex节点管理
    • 属性和事件处理
    • 生命周期方法
DeclarativeBaseView
  • 继承 AbstractBaseView
  • 核心功能:
    • 父视图和DOM父视图管理
    • ReactiveObserver集成,响应属性变化
    • 生命周期方法
    • 渲染视图管理和坐标转换
ViewContainer
  • 继承 DeclarativeBaseView,泛型类 ViewContainer<A : ContainerAttr, E : Event>
  • 核心功能:
    • 子视图管理(addChild, removeChild
    • 模板子视图访问(templateChildren
    • DOM操作
    • Flex布局管理
ComposeView
  • 继承 ViewContainer,泛型类 ComposeView<A : ComposeAttr, E : ComposeEvent>
  • 核心功能:
    • 组合组件生命周期管理(created, viewWillLoad, viewDidLoad, viewDidLayout等)
    • body():抽象方法,定义视图内容构建器
    • pagerData:获取页面数据
    • emit():触发事件

二、属性体系继承链

Props
  • 属性基类,提供基本属性管理功能
Attr
  • 继承 Props 并实现以下接口:
    • IStyleAttr:样式属性接口
    • ILayoutAttr:布局属性接口
  • 核心功能:
    • Flex节点管理
    • 动画管理
    • 属性任务管理
ContainerAttr
  • 继承 Attr 并实现以下接口:
    • IContainerLayoutAttr:容器布局属性接口
    • IEventCaptureAttr:事件捕获属性接口
  • 核心功能:
    • Flex布局方向设置
    • 对齐方式设置
    • 玻璃效果设置(iOS)
ComposeAttr
  • 继承 ContainerAttr
  • 为组合组件提供基础属性支持

三、事件体系继承链

BaseEvent
  • 继承 BaseObject 并实现以下接口:
    • IEvent:事件接口
    • IPagerId:持有pagerId的接口
  • 核心功能:
    • 事件注册和取消注册
    • 事件触发
Event
  • 继承 BaseEvent
  • 核心功能:
    • 插件事件管理
    • 同步事件支持
    • 扩展事件中心
ComposeEvent
  • 继承 Event
  • 核心功能:
    • 组合事件映射管理
    • 事件注册和触发

四、ComposeView 的下游子类

1. Pager

  • 继承 ComposeView<ComposeAttr, ComposeEvent> 并实现 IPager 接口
  • 页面容器类,管理整个页面的生命周期和状态

2. SliderPageView

  • 继承 ComposeView<SliderPageAttr, SliderPageEvent>
  • 滑块页面视图组件

3. CheckBoxView

  • 继承 ComposeView<CheckBoxAttr, CheckBoxEvent>
  • 复选框组件

4. ButtonView

  • 继承 ComposeView<ButtonAttr, ButtonEvent>
  • 按钮组件

5. SwitchView

  • 继承 ComposeView<SwitchAttr, SwitchEvent>
  • 开关组件

6. SliderView

  • 继承 ComposeView<SliderAttr, SliderEvent>
  • 滑块组件

五、相关接口详解

1. IViewPublicApi

  • 视图公共API接口,定义视图引用、属性/事件设置、坐标转换、动画等方法

2. IModuleAccessor

  • 模块访问器接口
  • 提供方法:
    • getModule(name: String): T?:获取模块,不存在返回null
    • acquireModule(name: String): T:获取或创建模块

3. IPagerId / PagerScope

  • IPagerId:已被废弃,由 PagerScope 替代
  • PagerScope:持有pagerId的接口
    • 属性:pagerId: String
    • 方法:getPager(): IPager

4. ILayoutAttr

  • 布局属性接口,用于设置视图的布局属性
  • 提供方法:width(), height()

5. IContainerLayoutAttr

  • 容器布局属性接口,扩展自 ILayoutAttr
  • 提供方法:flexDirection(), justifyContent(), alignItems(), flexWrap(), padding()

6. IEventCaptureAttr

  • 事件捕获属性接口
  • 提供方法:capture(),支持设置点击、双击、长按、拖拽等捕获规则

7. IEvent

  • 事件接口,定义事件的基本操作

8. IPager

  • 页面接口,定义页面的生命周期和操作方法
  • 提供方法:onCreatePager(), onDestroyPager(), pageDidAppear(), pageDidDisappear()

六、ComposeView 的设计特点

  1. 组合式API设计 :通过 body() 函数构建视图,支持声明式UI
  2. 完整生命周期:提供从创建到销毁的完整生命周期钩子
  3. 泛型支持:通过泛型参数支持不同类型的属性和事件
  4. 组件化架构:作为UI组件的基类,方便组件的组合和复用
  5. 响应式集成:继承自响应式系统,支持数据流驱动UI更新
  6. 事件系统:完善的事件注册、分发和处理机制
  7. 布局系统:基于Flexbox的灵活布局能力

七、总结

ComposeView 是 KuiklyUI 框架中组合式UI的核心基类,通过多层继承体系实现了从基础对象到复杂UI组件的功能扩展。它不仅继承了视图容器的全部能力,还提供了组合式API和完整的生命周期管理,为框架中的各种UI组件(如按钮、开关、滑块等)提供了统一的基础架构。

整个继承体系设计合理,职责分明,通过泛型、接口和抽象类的组合使用,实现了高内聚、低耦合的架构设计,充分体现了面向对象编程的封装、继承和多态特性。

相关推荐
逛逛GitHub7 小时前
登上 GitHub 热榜!一口气调用多个 AI 大模型开源神器。
github
21号 18 小时前
4.客户端(Redis)
开发语言·数据库·github
梦想CAD控件8 小时前
网页CAD中组(Group)功能的二次开发
前端·javascript·github
米诺zuo9 小时前
不同的项目仓库配置不同的github账号
github
修炼室9 小时前
如何在GitHub上查看自己提过的Issues
github
CoderJia程序员甲12 小时前
GitHub 热榜项目 - 日榜(2025-10-21)
ai·开源·github·ai编程·github热榜
tokepson14 小时前
技术 | 在单台电脑上管理多个 GitHub 账户并解决推送问题(测试中)
github·技术·记录
tiantian_cool14 小时前
正确的 .gitignore 配置
前端·github
我狸才不是赔钱货15 小时前
AI大模型“战国策”:主流LLM平台简单介绍
c++·人工智能·程序人生·github·llama