博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Workspace Hierarchy 模式 [翻译]

Posted on 2007-09-24 13:42  洪博士™  阅读(516)  评论(1)    收藏  举报
  • 问题

通常一个客户端应用程序会包含许多不同类型的视图,这些视图从的各种部件或模块显示数据。例如,一个应用程序会并列显示客户列表与选中客户的详细信息。

  • 解决方案

创建一个 Workspace (工作区) 层次结构,这个结构将客户端界面分割成多个嵌套的矩形区域,见图示一。在这个基于 Composite UI Application Block 的架构设计中,Workspace 是一个能够显示多个 View (视图) 的区域。

在图示一中,房地产系统的客户端分割成水平的两个Workspace (工作区):左工作区 A 和右工作区 B。右工作区又进一步分成两个更小的工作区:工作区 C 和工作区 D。



Figure 1

Hierarchy of workspaces

在基于 Composite UI Application Block 的客户端,工作区层次是通过一些 Workspace 和 View 的简单结构实现的。



Figure 2

Logical view of a workspace hierarchy

一个 View,可能是一个 Windows Form 或一个界面控件,包含一个或多个 Workspace,应用程序在运行时指示一个 Workspace 显示一个更小的 View,如果这个 View 包含有自己的 Workspace,它就会指示自己的那些 Workspace 再显示它们的 View。这个过程将在整个 Workspace 层次结构中持续进行。

有两种类型的 Workspace提供同时具有多个界面视图的功能,这些界面视图可以同时放置在同一位置,但其中只有一个界面视图根据需要显示为可视界面。这两种类型的 Workspace分别是 DeckWorkspace 和 TabWorkspace。

一个 View 中的多个Workspace 通常是通过一些的垂直或水平的分隔条来分割的,用户就可以在运行时调整宽度或高度。

Workspace Hierarchy 模式具有非常大的界面管理的弹性。你可以创建一个内含一组 Workspace 的 Layout View (布局视图),应用程序能够将其他 View 加载到这些 Workspace 中,只要改变 Layout View,你就可以改变客户端的显示方式。

  • 职责

Workspace 必须放置在 WorkItem (工作项) 容器中,这就意味着你要考虑到 Workspace 和 View 在容器层次结构中的可见性问题。仅当一个 Workspace 对一个 View 可见的时候,应用程序才能将这个 View 显示在那个 Workspace 中,这个规则对 View 属于不同的 Module (模块) 也是有效的,因为在一个 Module 中的一个 View 要对它所属的 Workspace 在另外一个 Module 中的另外一个 View 中也有效,第一个 View 必须放置在根结点的 WorkItem 中。

  • 示例

举例说明一个 Workspace 的层次结构,请参见 Smart Client Software Factory 参考实现项目中的 ShellForm 类。这个 ShellForm 定义了两个 Workspace:_leftWorkspace 和 _rightWorkspace,AppraiserWorkbenchModule 模块将 MyAppraisalsView 视图加载到 _leftWorkspace 中,然后将 AppraisalDetailView 视图加载到 _rightWorkspace 中。

  • 更多信息

这个模式是基于 Container Hierarchy 模式的。