当前位置: 首页 > article >正文

实例研究:设计一个文档编辑器(1)

通过设计一个称为L e x i 的“所见即所得”(或“W Y S I W Y G”)的文档编辑器,来介绍设计模式的实际应用。我们将会看到在L e x i和类似应用中,设计模式是怎样解决设计问题的。在本章最后,通过这个例子的学习你将获得8个模式的实用经验。
图2 - 1是L e x i的用户界面。文档的所见即所得的表示占据了中间的大矩形区域。文档能够以不同的格式风格自由混合文本和图形。文档的周围是通常的下拉菜单和滚动条,以及一些用来跳到特定页的页码图标。

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

我们将在陆续讨论这些设计问题。每个问题都有一组相关联的目标集合和我们怎样达到这些目标的限制条件集合。在给出特定解决方案之前,我们会详细解释设计问题的目标和限制条件。问题和其解决方案会列举一个或多个设计模式。对每个问题的讨论将在对相关设计模式的简单介绍后结束。


http://www.kler.cn/a/532657.html

相关文章:

  • e2studio开发RA2E1(5)----GPIO输入检测
  • Windows图形界面(GUI)-QT-C/C++ - QT Tab Widget
  • ESLint
  • 2.3学习总结
  • QT交叉编译环境搭建(Cmake和qmake)
  • 第 1 天:UE5 C++ 开发环境搭建,全流程指南
  • 有用的sql链接
  • 调用DeepSeek API实现对本地数据库的AI管理
  • 手扶电梯缺陷检测数据集VOC+YOLO格式67张1类别
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.19 线性代数核武器:BLAS/LAPACK深度集成
  • 二叉树03(数据结构初阶)
  • Leetcode—922. 按奇偶排序数组 II【简单】
  • mybatis plus 持久化使用技巧及场景
  • VUE3 pinia的对象莫名其妙被赋值成其他对象
  • 基于Hadoop实现气象分析大屏可视化项目【源码+LW+PPT+解析】
  • 2025年时序数据库发展方向和前景分析
  • Java牙科诊所管理系统web医院病例挂号预约平台springboot/ssm代码编写
  • 刷题记录 动态规划-7: 63. 不同路径 II
  • 我主编的电子技术实验手册(24)——RL并联电路
  • Wide Deep 模型:记忆能力与泛化能力
  • NSSCTF Pwn [SWPUCTF 2022 新生赛]shellcode?题解
  • 网安学习xss和php反序列后的心得
  • minikube 的 Kubernetes 入门教程--Dify
  • [C++]C++中的常见异常和自定义异常
  • 半导体器件与物理篇6 MESFET
  • 解释 Java 中的垃圾回收机制,以及如何优化垃圾回收性能?