<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      學習設計模式找不到練手的實戰項目?項目已開源

      手寫解析器、渲染器、主題樣式、自定義彈窗和精細的撤銷/恢復機制等。

      ??整體總結

      YtyMark-java 項目,從用戶輸入到用戶查看到實時渲染結果的全過程

      image

      • 監聽文本區域內容是否發生變化

      • 解析和渲染:“原始文本的塊裁剪”→“塊級元素解析” → “行內元素解析” → “渲染” 四大階段

      • 將渲染結果重新刷新展示出來

      從UI界面到核心的解析渲染,通過一系列設計模式串聯各模塊,實現了高度的模塊化和可擴展性。

      構建者模式

      用于構造解析器(ParserBuilder)和渲染器(RendererBuilder),將復雜對象的組裝過程與表示分離,使客戶端只需按需配置各組件即可得到完整的解析/渲染器實例。

      先從核心模塊的這四個階段來看設計模式的使用情況。

      ??1. 原始文本的塊裁剪階段

      此階段為“塊級元素預處理”階段,將普通文本按照塊級元素進行裁剪。

      狀態模式

      主要設計模式為狀態模式

      在“塊級元素預處理”階段,根據當前處理狀態(如普通文本、列表、引用塊等)動態切換處理邏輯,將不同類型的文本裁剪成塊級元素,避免了大量的條件分支。

      通過狀態模式實現類似狀態機的機制,當狀態(語法)匹配時,自動流轉到專門處理這個語法的程序,處理完之后分割成一個“塊”(這個塊就是一個塊元素),再回到默認狀態,然后繼續處理后續的文本。具體代碼位于:org.ytymark.parser.block.state包。

      image

      ??2. 塊級元素解析階段

      責任鏈模式

      構建一條解析“流水線”,不同的責任對象按優先級依次嘗試處理當前文本塊或嵌套結構,直到有對象成功解析為止,極大提升了解析流程的靈活性。

      組合模式

      將解析結果組織成一棵 AST(抽象語法樹)塊級元素節點樹,節點既可作為葉子,也可包含子節點,這個階段標題、段落和水平分割線只能是葉子節點,統一對外提供相同的接口,便于樹形結構的構建與遍歷。

      整個處理流程,如圖:

      image

      關于涉及的相關代碼,可以查看專門簡述核心功能那篇文章。

      ??3. 行級元素的解析階段

      策略模式

      動態選擇不同的行內元素解析策略(例如鏈接、加粗、斜體等)以及界面的主題渲染策略(淺色/暗黑主題),通過統一接口切換算法或樣式實現。

      組合模式+迭代器模式

      通過迭代器結合遞歸來遍歷節點樹,為 AST 提供統一的遍歷方式。在解析階段,用于遍歷塊級元素進行行內元素解析;在渲染階段,遍歷節點樹完成渲染操作。

      使用迭代器完成兄弟節點的遍歷(廣度遍歷),再結合遞歸完成子節點遍歷(深度遍歷)。

      ??4. 渲染階段

      中介者模式思想

      在 AST、解析器、渲染器之間引入中介邏輯,解耦它們的直接依賴,使得解析和渲染兩者可以靈活組合,支持輸出到不同類型的文檔。

      image

      訪問者模式

      將節點數據結構與渲染行為分離,在塊級和行級元素解析和渲染時,訪問者對象負責執行相應操作,以解決嵌套調用的復雜性并提高擴展性。在渲染的過程中,組合模式+迭代器模式起到非常關鍵的作用,在渲染階段,使用迭代器完成兄弟節點的遍歷(廣度遍歷),再結合遞歸完成子節點遍歷(深度遍歷),完成節點樹的渲染操作。

      image

      后面介紹以工具界面、操作相關的功能。

      ??5. 樣式相關功能

      工廠模式

      在渲染器中,根據不同場景創建對應的樣式或渲染器實例,如PDF 等輸出的字體、顏色工廠。

      觀察者模式和單例模式

      監聽主題(暗黑/淺色)變化或 JavaFX 屬性變化,觸發重新渲染文本內容,保持 UI 與主題狀態同步。主題監聽器將有主題管理類來統一管理,并結合單例模式,使得主題管理器全局唯一,并提供統一訪問入口ThemeManager.getInstance()。

      ??6. 自定義彈框

      自定義通用彈框,在此基礎上根據不同場景進行不同的裝飾

      裝飾模式

      對基礎彈框組件進行功能性擴展,在不同場景下動態增加或修改對話框行為和樣式,而無需改動原有組件代碼。

      ??7. 編輯操作

      命令模式和備忘錄模式

      將菜單項、工具欄按鈕、快捷鍵等操作封裝為命令對象,支持撤銷/重做、宏命令等功能的統一管理。以單次輸入為粒度保存編輯歷史,實現精細化的撤銷與重做,支持一千步的撤銷/重做,并預留撤銷/重做的開啟或關閉。

      ??8. 界面截圖預覽

      白天模式的截圖:

      image

      夜間模式的截圖:

      image

      ??9. 總結

      以上即為 YtyMark-java 項目所用的主要設計模式及其在各個功能模塊中的應用場景,既展現了設計模式的實戰價值,也為后續擴展與維護打下了堅實基礎。

      ??我的開源項目地址

      ?? GitHub 開源地址(YtyMark-java)

      歡迎提交 PR、Issue、Star ??!

      如果需要單獨學習這些設計模式,可以在微信公眾號回復:設計模式,來獲取《掌握設計模式:23種經典模式實踐、選擇、價值與思想》pdf手冊。

      image

      查看往期設計模式文章的:設計模式

      超實用的SpringAOP實戰之日志記錄

      2023年下半年軟考考試重磅消息

      通過軟考后卻領取不到實體證書?

      計算機算法設計與分析(第5版)

      Java全棧學習路線、學習資源和面試題一條龍

      軟考證書=職稱證書?

      軟考中級--軟件設計師毫無保留的備考分享

      posted @ 2025-04-24 08:32  淵渟岳  閱讀(559)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕无码不卡在线| 久久婷婷五月综合97色直播| 性中国videossexo另类| 松溪县| 国产不卡一区二区四区| 天干天干啦夜天干天2017| 亚洲精品国产熟女久久久| 日韩有码国产精品一区| 国产AV巨作丝袜秘书| 庄浪县| 丰满人妻被黑人猛烈进入| 又黄又爽又色的少妇毛片| 国产精品v片在线观看不卡| 久久久久无码精品国产h动漫| 韩国无码AV片午夜福利| 国产免费又黄又爽又色毛| 日韩AV高清在线看片| 日产国产一区二区不卡| 人人色在线视频播放| 无码人妻斩一区二区三区| 内射无套内射国产精品视频| 最新亚洲国产手机在线| 一女被多男玩喷潮视频| 中文字幕一区二区三区精华液| 亚洲熟女精品一区二区| 鲁丝一区鲁丝二区鲁丝三区| 狼色精品人妻在线视频| 久久精品国产亚洲av亚| 视频一区二区三区刚刚碰| 人人人澡人人肉久久精品| 中文字幕乱码无码人妻系列蜜桃| 国产美女久久久亚洲综合| 国产无遮挡免费真人视频在线观看| 午夜夫妻试看120国产| 欧美黑人添添高潮a片www| 精品综合一区二区三区四区| 欧洲国产成人久久精品综合| 精品久久久久无码| 中国女人高潮hd| 亚洲av不卡电影在线网址最新| 男人狂桶女人高潮嗷嗷|