组件架构
webforJ 为你提供一个用于组件库的 Java API,并在服务器端管理每个组件。本页将介绍组件的结构以及如何扩展组件。
组件的结构
产品中随附的每个 webforJ 组件都是一个 Java 类,与 DWC 组件库中的一个客户端 Web 组件一一对应。Java 类在服务器端保存组件的状态并提供其 API,框架则确保浏览器中的 Web 组件与其保持同步。
你只需使用 Java 类。组件的属性、事件和浏览器中的渲染均由框架处理,因此你可以仅使用 Java 构建 Web 应用。
DwcComponent 基类
DWCComponent 基类是 webforJ 组件架构的核心。所有 webforJ 组件都继承自此类。它 负责管理 Java 组件与其客户端对应组件之间的关联,包括组件的创建、属性更新和事件处理。
不过,需要注意的是,开发者不得进一步扩展 DWCComponent 类。尝试这样做会导致运行时异常,从而禁止此类扩展。这项限制旨在维护两者之间关联的完整性,并确保开发者不会无意中以可能造成意外后果的方式操纵该关联。
final 类和扩展限制
在 webforJ 中,除内置 HTML 元素及其子类外,大多数组件类都声明为 final。这意味着无法扩展这些类或创建它们的子类。此设计是有意为之,主要有以下几个目的:
-
控制客户端关联:如前所述,扩展 webforJ 组件类会暴露 Java 组件与其客户端对应组件之间的内部关联。为保持组件行为的一致性和可预测性,这种程度的控制受到限制。
-
防止意外修改:将组件类声明为
final,可以防止意外修改核心组件,从而降低引入意外行为或漏洞的风险。 -
鼓励使用组合组件:为扩展组件的功能,webforJ 框架鼓励开发者采用组合方式。组合组件是包含其他 webforJ 组件或标准 HTML 元素的 Java 类。虽然不鼓励传统的继承方式,但组合组件可以让你创建封装现有组件的全新自定义组件。