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?
:获取模块,不存在返回nullacquireModule(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 的设计特点
- 组合式API设计 :通过
body()
函数构建视图,支持声明式UI - 完整生命周期:提供从创建到销毁的完整生命周期钩子
- 泛型支持:通过泛型参数支持不同类型的属性和事件
- 组件化架构:作为UI组件的基类,方便组件的组合和复用
- 响应式集成:继承自响应式系统,支持数据流驱动UI更新
- 事件系统:完善的事件注册、分发和处理机制
- 布局系统:基于Flexbox的灵活布局能力
七、总结
ComposeView 是 KuiklyUI 框架中组合式UI的核心基类,通过多层继承体系实现了从基础对象到复杂UI组件的功能扩展。它不仅继承了视图容器的全部能力,还提供了组合式API和完整的生命周期管理,为框架中的各种UI组件(如按钮、开关、滑块等)提供了统一的基础架构。
整个继承体系设计合理,职责分明,通过泛型、接口和抽象类的组合使用,实现了高内聚、低耦合的架构设计,充分体现了面向对象编程的封装、继承和多态特性。