《设计模式》笔记 02 - 实例研究:设计一个文档编辑器

版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/88934155

这个称为 Lexi 的“所见即所得”文档编辑器的设计开发,不要涉及以下几个方面的问题:文档结构、格式化、修饰用户界面、支持多种视感标准、支持多种窗口系统、用户操作、拼写检查和连字符。

文档结构

该问题需要解决的主要是文本、图形、行、列、表等文档元素的组织显示。可以使用到 Composite(组成)设计模式,描述其面向对象的递归组合本质。

格式化

格式化说的是对文档内容的格式化,前面文档结构是对元素的表示问题,这里需要解决的是怎么达成一个个特例化的结构。可能使用到多种不同的算法。所以合适的设计模式是 Strategy(策略)模式。对这一设计模式的应用,特别需要注意考虑为易于支持不同的策略(算法),需要为其环境设计足够通用的接口。

修饰用户界面

这个问题考虑文档这一核心内容之外的一些附带性功能的实现。这里我们使用 Decorator(装饰)模式,通过给一个对象增加职责的来达到目标效果。

PS:这个章节的翻译应该是有问题的,很多句子读来读去都读不通顺。翻译不走心。

支持多种视感标准

视感,即 look-and-feel。这个标准是为了统一所有用户界面程序呈现的一致性,而不同的操作系统又会有不完全一样的标准。为了满足代码在各个视感标准之下的高可移植性,这里我们使用 Abstract Factory(抽象工厂)模式。

支持多种窗口系统

多种窗口系统和多种视感标准是类似的,也是有可移植性问题。不同的是,这里需要关注的是用户界面程序的图像显示、操作等的实现与操作系统底层的关系。所以这里我们采用 Bridge(桥接)模式来做隔离。

用户操作

所谓“所见即所得”风格,用户操作是和程序界面紧密联系在一起的。但是为了不让操作与复杂的界面元素耦合,我们需要对操作进行封装。这里使用到 Command(命令)模式,把请求封装起来,可以很方便地进行发送、委托等。

拼写检查和连字符

拼写检查和连字符,都是需要对文本进行全面的检查分析,其处理方式是类似的。首先是对文本的遍历问题,需要使用的 Iterator(迭代器)模式,对文本元素的操作更新,需要使用到 Visitor(访问者)模式。

廖杰良 - 2019-03-31

猜你喜欢

转载自blog.csdn.net/engrossment/article/details/88934155