实例:设计一个文档编辑器 Lexi
文档能够以不同的格式风格自由混合文本和图形。
一.设计问题:
1.文档结构: 对文档内部表示的选择几乎影响设计的每个方面。所有的编辑、格式安排、显示和文本分析都涉及到这种表示。我们怎样组织这个信息会影响到应用的其他方面。
2.格式化: 是怎样将文本和图形安排到行和列上的?哪些对象负责执行不同的格式策略?这些策略优势怎样和内部表述相互作用的。
3.修饰用户界面: Lexi的用户界面包括滚动条、边界和用来修饰文档界面的阴影。这些修饰有可能随着用户界面的演化而发生变化。因此,在不影响应用其他方面的情况下,能自由增加和取出这些修饰十分重要
4.支持多种视感标准 应不需做较大修改就能适应不同的视感标准,如Motif和Presentation Mangager等
5.支持多种窗口系统 不同的视感标准通常是在不同的窗口系统上实现的。其设计应尽可能独立于窗口系统
6.用户操作 用户通过不同的用户界面控制lexi.包括按钮盒下拉菜单。这些界面应对的功能分散在整个应用对象中。这里的难点在于提供一个统一的机制,即可以访问这些分散的功能,又可以对操作进行撤销。
7.拼写检查和连字符 怎样支持像检查拼写错误和决定连字符的连字点 这样的分析操作的?当我们不得不添加一个新的分析操作时,我们怎样尽量少修改相关的类。
二.文档结构
从根本上说,一个文档只是对字符、线、多边形和其他图形元素的一种安排。一个文档作者并不将这些元素看做图形项,而是看做文档的物理结构--行、列、图形、表和其他子结构。而这些子结构也有自己的子结构。
用户界面应该让用户直接操纵这些子结构。如,一个图表当作一个单元 ,而不是个别图形原语的一组集合。