Jexi设计 (1) Lexi研究

从今天开始准备正式写Jexi编辑器,目标就是《设计模式》中的C++例子Lexi:一个图文混排的所见即所得编辑器:

今天在公司闲的时候把《design patterns》的Lexi设计部分仔细看了一遍,整理了一下GoF的设计:

文档结构:应用Composite模式,如图:

通过接口Glyph,应用Composite模式,将多个对象组织起来:

文档格式:通过一系列Formatting Algorithm来实现Formatting,这是由Composite和Composition实现的:

Responsibility Operations
what to format void SetComposition(Composition*)
when to format virtual void Compose()

用户界面:边框,滚动条等都是通过decorator模式动态装饰的:

Redo/Undo功能:这是通过Command模式实现的,《design patterns》中有详细讲解,至于其他功能,如平台无关窗口,界面风格切换,拼写检查等暂时就不考虑了。

不幸的是,GoF只给了设计思想,没有现成的代码,所以一切还得靠自己。

你可能感兴趣的:(设计模式,C++,c,C#)