Java中的复合视图设计模式(Composite View Design Pattern)

19-04-28 jdon
                   

使用由多个子视图组成的复合视图。整个模板的每个子视图可以整体动态地包括在内,并且可以独立于内容来管理页面的布局。 

Apache Tiles和SiteMesh  框架使用Composite View Design Pattern。 

为简单起见,这种模式分为若干部分,如问题,动因,结构,解决方案,实施等。

          目 录

  • 问题
  • 动因
  • 解决方案
  • 说明
  • 结构 - 类图,序列图
  • 参与者和责任
  • 履行
  • 后果
  • 适用性
  • 现实世界的例子
  • 参考

问题

(问题部分描述了开发人员面临的设计问题)

您希望从模块化的原子组件部件构建视图,这些部件组合在一起以创建复合整体,同时独立地管理内容和布局。

动因

(本节描述了列出影响问题和解决方案的原因和动机。动因列表突出了人们可能选择使用模式并提供使用模式的理由的原因)

  • 您需要在多个视图中重复使用的常见子视图,例如页眉,页脚和表格,这些子视图可能出现在每个页面布局中的不同位置。
  • 您在子视图中有内容可能经常更改或可能受某些访问控制的约束,例如限制对特定角色的用户的访问。
  • 您希望避免在多个视图中直接嵌入和复制子视图,这使得布局更改难以管理和维护。

解决方案

使用由多个原子子视图组成的复合视图。整个模板的每个子视图可以整体动态地包括在内,并且可以独立于内容来管理页面的布局。

例如,门户网站包含许多独立的子视图,例如新闻源,天气信息和单个页面上的股票报价。可以独立于内容来管理页面的布局。

此模式的另一个好处是,Web设计人员可以对站点的布局进行原型设计,将静态内容插入每个模板区域。随着站点开发的进展,实际内容将替换这些占位符。该方法提供了改进的模块化和可重用性,以及改进的可维护性。

结构体

我们使用UML类图来显示解决方案的基本结构,本节中的UML序列图介绍了解决方案的动态机制。 

下面是表示Composite View Design Pattern关系的类图。

类图

序列图