设计模式 2
设计一个文档编辑器
设计问题
考察Lexi设计中的7个问题:
- 文档结构 对文档内部表示的选择几乎影响Lexi设计的每个方法。所有的编辑、格式安排、显示和文本分析都设计到这种表示。怎么组织这个信息。
- 格式化 Lexi是怎样将文本和图形安排到行和列上的?哪些对象负责执行不同的格式策略?这些策略又是怎样和内部表述相互作用的?
- 修饰用户界面 Lexi的用户界面包括滚动条、边界和用来修饰WYSIWYG文档界面的阴影。这些修饰有可能随着Lexi用户界面的演化而发生变化。因此,在不影响应用其他方面的情况下, 能自由增加和去除这些修饰就十分重要列。
- 支持多种视感(look-and-feel)标准 Lexi应不需要做较大修改就能适应不同的视感标准,如Motif和Presentation Manager(PM)等。
- 支持多种窗口系统 不同的视感标准通常是在不同的窗口系统上实现的。Lexi的设计应尽可能的独立于窗口系统。
- 用户操作 用户通过不同的用户界面控制Lexi,包括按钮和下拉菜单。这些界面对应的功能分散在整个应用对象中。这里的难点在于提供一个统一的机制,既可以访问这些分散的功能,又可以对操作进行撤销(undo)。
- 拼写检查和连字符 Lexi是怎样支持像检查拼写错误和决定连字符的连字点这样的分析操作的?当我们不得不添加一个新的分析操作时,我们怎样尽量少修改相关的类?
文档结构