2.實(shí)例研究:設(shè)計(jì)一個(gè)文檔編輯器

  • 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ì)颅和。
    1. 格式化
      文檔物理結(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ù)。煌茴。随闺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市景馁,隨后出現(xiàn)的幾起案子板壮,更是在濱河造成了極大的恐慌,老刑警劉巖合住,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绰精,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡透葛,警方通過(guò)查閱死者的電腦和手機(jī)笨使,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)僚害,“玉大人硫椰,你說(shuō)我怎么就攤上這事∪希” “怎么了靶草?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)岳遥。 經(jīng)常有香客問(wèn)我奕翔,道長(zhǎng),這世上最難降的妖魔是什么浩蓉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任派继,我火速辦了婚禮,結(jié)果婚禮上捻艳,老公的妹妹穿的比我還像新娘驾窟。我一直安慰自己,他們只是感情好认轨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绅络。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恩急。 梳的紋絲不亂的頭發(fā)上节视,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音假栓,去河邊找鬼。 笑死霍掺,一個(gè)胖子當(dāng)著我的面吹牛匾荆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杆烁,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼牙丽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兔魂?” 一聲冷哼從身側(cè)響起烤芦,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎析校,沒(méi)想到半個(gè)月后构罗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡智玻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年遂唧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吊奢。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盖彭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出页滚,到底是詐尸還是另有隱情召边,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布裹驰,位于F島的核電站隧熙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏邦马。R本人自食惡果不足惜贱鼻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滋将。 院中可真熱鬧邻悬,春花似錦、人聲如沸随闽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蛾扇,卻和暖如春攘烛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镀首。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工坟漱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人更哄。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓芋齿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親成翩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子觅捆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容