第二章 实例研究:设计一个文档编辑器--《设计模式-可复用面向对象软件的基础》Erich Gamma

作者小感:

设计模式这本书,对于我来说,初学者看起来比较懵懂,稍微有些枯燥。所以得耐着性子看。看完每一章节,就会有成就感,也确实能够打心眼赞成这种设计模式。

第二章,是从设计一个文档编辑器这个例子,告诉大家:设计模式在应用中的作用,以及如何根据需求来判断使用哪种模式。

这个例子好长哦,一定要耐心。看完这个例子,更是加强了我学习设计模式的决心。

大家一起努力哦。^o^


Lexi文档编辑器设计时面临的问题:

(1)文档结构 。即文档物理结构的表示问题。文档中包含各种类型的图元,如:文字,图形,行,列,还有组合的图元。如何组织这些图元。

(2)格式化。如何构造文档结构,如:将文本分行,分列,用户制定边界宽度等等。

(3)修饰用户界面。 在文档区域周围加边界,加滚动条等。

(4)支持多视感标准。支持多种不同风格的用户界面。比如:按钮可以是矩形,也可是圆形。

(5)支持多种窗口系统。移植性问题。例如:窗口环境不同的窗口系统,他的大小得根据实际硬件大小来限制。

(6)用户操作。 用户操作有很多种,并且同一种用户目的,可由多种命令操作实现。比如:既可以通过菜单项来实现撤销,也可以通过键盘快捷键来实现。

(7)拼写检查和连字符。如何遍历不同数据结构存储的元素。如何对不同类型的图元进行检查。

(在本章中,大多数是使用类和对象的组合关系来实现,并不提倡继承方式)

下面,具体介绍每个问题。


(1)文档结构

总体思想:每种图元都是一种对象,对图元对象进行递归组合(recursive composition)。用到的模式为:Composite模式

 Composite模式可以表示复杂的、层次式的结构,描述了面向对象的递归组合的本质。

递归组合,可以由简单的元素逐渐建立复杂的元素,是我们用简单图元构造复杂文档的方法之一。在文档结构中,应该一致对待文本和图形,因此我们将这些图元抽象出来抽象类Glyph,不同图元(字符、矩形、行、列)是Glyph的子类。

(2)格式化即:Composite,组合

总体思想:将格式化算法抽象出来,作为格式化类Compositor类。一个Compositor类的子类可以实现一个各自的不同格式化算法(如,不同的分行算法)。格式化类Compositor类和他的子类构成了一个格式化类层次,封装格式化算法。用到的模式为:Strategy模式。

Compositor格式化的元是Composition图元的各个子图元。Composition 类中包含(聚合一个Compositor类型的对象;Compositor类中包含(关联)一个Composition *类型的指针。一个Composition创建时候得到一个Compositor子类的对象,composition需要格式化的时候,它的Compositor对象调用Compositor::compose()操作该操作遍历composition的各个子图元,并进行格式化

这里用到的Strategy模式,该模式封装了策略和操作环境。compositor是策略(格式化算法),composition(组合的图元策略的环境。Compositor和Composition的分离确保了文档物理结构和不同格式化算法之间的

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Erich Gamma与其合著者在1994年出版了一本名为《设计模式:可复用面向对象软件基础》的书籍,该书成为了设计模式领域重要的参考资料之一。这本书广泛地介绍了23种常见的设计模式,并提供了详细的示例和应用场景。 设计模式是一种针对面向对象软件开发的可复用解决方案。通过使用设计模式,开发人员能够在软件开发过程中面临的常见问题上提供一致的解决方案。 《设计模式:可复用面向对象软件基础》一书的作者Erich Gamma是著名的计算机科学家和软件工程师,他出色的在设计模式领域的工作成就使他受到了广泛认可和赞誉。他与其他三位合著者共同介绍了每种设计模式的定义、结构、应用场景以及优缺点。 这本书详细介绍了23种设计模式,包括创建型模式、结构型模式和行为型模式。创建型模式旨在提供以某种方式创建对象的机制,例如工厂方法模式、抽象工厂模式和单例模式。结构型模式主要涉及对象之间的组合和实现关系,例如适配器模式、代理模式和装饰器模式。行为型模式关注对象之间的通信和相互作用,例如观察者模式、策略模式和迭代器模式。 《设计模式:可复用面向对象软件基础》这本书在软件开发领域产生了深远的影响,并成为了设计模式领域的经典著作。它提供了一种共享的设计方法,可以帮助开发人员更好地解决复杂软件开发中的问题。 ### 回答2: 设计模式软件工程中一种重要的编程思想,用于解决软件设计和开发中的常见问题。《设计模式》(Design Patterns)是由Erich Gamma等人于1994年出版的一本著名的书籍。该书总结了23种经典的设计模式,并提供了详细的示例和解释。 《设计模式》这本书的作者Erich Gamma是一位计算机科学家,是众多软件开发领域的重要人物之一。他是一位大师级人物,曾为IBM工作,并是Eclipse项目的发起人之一。这本书的出版对软件工程领域产生了深远的影响。 《设计模式》一书中介绍的设计模式可以分为三个类别:创建型模式、结构型模式和行为型模式。创建型模式主要解决对象的创建问题,如工厂方法模式和单例模式。结构型模式主要解决对象之间的组合和关联问题,如适配器模式和装饰器模式。行为型模式主要解决对象之间的通信和协作问题,如观察者模式和迭代器模式。 这本书的内容非常详细和实用,适合软件工程师、程序员和计算机科学专业的学生阅读。它不仅介绍了各种设计模式的概念和使用方法,还提供了丰富的示例代码和实际应用场景。通过学习这本书,读者可以了解到如何选择和应用适当的设计模式来解决实际的软件设计问题。 总之,《设计模式》这本书是软件工程领域的经典之作,是学习和掌握设计模式的重要参考书籍。它的影响力广泛,并对软件开发实践产生了积极的影响。无论是初学者还是有经验的开发者,都应该阅读并掌握这本书中的内容,以提高自己的设计和开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值