-
1.設(shè)計(jì)問(wèn)題
-
1.0 用戶界面
image.png - 1.1 文檔結(jié)構(gòu)
對(duì)文檔內(nèi)部表示的選擇幾乎影響Lexi設(shè)計(jì)的每個(gè)方面。所有的編輯、格式安排、顯示和文本分析都涉及到這種表示证芭。 - 1.2 格式化
Lexi是怎樣將文本和圖形安排到行和列上的?哪些對(duì)象負(fù)責(zé)執(zhí)行不同的格式策略担映?這些策略又是怎樣和內(nèi)部表述相互作用的废士? - 1.3 修飾用戶界面
Lexi的用戶界面包括滾動(dòng)條、邊界和用來(lái)修飾WYSIWYG文檔界面的陰影蝇完。這些修飾有可能隨著Lexi用戶界面的演化而發(fā)生變化官硝。因此,在不影響應(yīng)用其他方面的情況下短蜕,能自由增加和去除這些修飾就十分重要了泛源。 - 1.4 支持多種視感標(biāo)準(zhǔn);
- 1.5 支持多種窗口系統(tǒng)忿危;
- 1.6 用戶操作:按鈕,菜單
- 1.7 拼寫(xiě)檢查和連字符:Lexi是怎么樣支持像檢查拼寫(xiě)錯(cuò)誤和決定連字符的連字點(diǎn)這樣的分析操作的没龙?
-
-
2 文檔結(jié)構(gòu)
從根本上來(lái)說(shuō)铺厨,一個(gè)文檔只是對(duì)字符缎玫、線、多邊形和其它圖形元素的一種安排解滓。這些元素記錄了文檔的整個(gè)信息內(nèi)容赃磨。然而,一個(gè)文檔作者通常并不將這些元素看作圖形項(xiàng)洼裤,而是看作文檔的物理結(jié)構(gòu)——行邻辉、列、圖形腮鞍、表和其他子結(jié)構(gòu)值骇。而這些子結(jié)構(gòu)也有自己的子結(jié)構(gòu)。-
2.1 遞歸組合
層次結(jié)構(gòu)信息的表述通常是通過(guò)一種被稱為遞歸組合的技術(shù)來(lái)實(shí)現(xiàn)的移国。遞歸組合可以由簡(jiǎn)單元素逐漸建立復(fù)雜的元素吱瘩。
image.png - 2.2 圖元
為出現(xiàn)在文檔結(jié)構(gòu)的所有對(duì)象定義一個(gè)抽象類的圖元,它的子類既定義了基本的圖形元素(字符迹缀、圖像)使碾,又定義了結(jié)構(gòu)元素(行、列)
圖元有三個(gè)基本責(zé)任祝懂,它們是 1 )怎樣畫(huà)出自己票摇,2 )它們占用多大空間,3 )它們的父圖元和子圖元是什么砚蓬。 - 2.3 組合模式
遞歸組合不僅可用來(lái)表示文檔矢门,我們還可以用它表示任何潛在復(fù)雜的、層次式的結(jié)構(gòu)怜械。Composite模式描述了面向?qū)ο蟮倪f歸組合的本質(zhì)颅和。
-
-
- 格式化
文檔物理結(jié)構(gòu)表示和格式化是不同的,記錄文檔物理結(jié)構(gòu)的能力并沒(méi)有告訴我們?cè)鯓拥玫揭粋€(gè)特殊格式化結(jié)構(gòu)缕允。我們將“格式化”的含義限制為將一個(gè)圖元集合分解為若干行峡扩。
- 3.1 封裝格式化算法
L e x i是一個(gè)所見(jiàn)即所得編輯器,所以一個(gè)必須考慮的重要權(quán)衡之處在于格式化的質(zhì)量和格式化的速度之間的取舍障本。我們通常希望在不犧牲文檔美觀外表的前提下教届,能得到良好的反映速度。這種權(quán)衡受許多因素影響驾霜,而并不是所有因素在編譯時(shí)刻都能確定的案训。例如,用戶也許能忍受稍慢一點(diǎn)的響應(yīng)速度粪糙,以換取較好的格式强霎。這種選擇也許導(dǎo)致了比當(dāng)前算法更適用的徹底不同的格式化算法。另一個(gè)例子蓉冈,更多實(shí)現(xiàn)驅(qū)動(dòng)的權(quán)衡是在格式化速度和存儲(chǔ)需求之間:很有可能為了緩存更多的信息而降低格式化速度城舞。因?yàn)楦袷交惴ㄚ呌趶?fù)雜化轩触,因而可以考慮將它們包含于文檔結(jié)構(gòu)之中,但最
好是將它們徹底獨(dú)立于文檔結(jié)構(gòu)之外家夺。理想情況下脱柱,我們能夠自由地增加一個(gè) Glyph子類而不用考慮格式算法。反過(guò)來(lái)拉馋,增加一個(gè)格式算法不應(yīng)要求修改已有的圖元類榨为。
- 格式化
未完待續(xù)。煌茴。随闺。