設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧

設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧

ID:31118148

大?。?6.00 KB

頁數(shù):15頁

時間:2019-01-06

設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧_第1頁
設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧_第2頁
設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧_第3頁
設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧_第4頁
設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《設(shè)計模式問答(2)-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、設(shè)計模式問答(2)-編程開發(fā)技術(shù)設(shè)計模式問答(2)木文由ImportNew?shcnggordon翻譯自codeprojecto歡迎加入翻譯小組。轉(zhuǎn)載請見文末要求。介紹這是設(shè)計模式問答1的連載。在這個系列,我們將覆蓋到解釋器、迭代器、調(diào)停者、備忘錄和觀察者模式。如果你還沒冇閱讀過我之前的系列,你可以隨時從下面開始?設(shè)計模式問答1:工廠模式,抽象工廠模式,構(gòu)造者模式,原型模式,單例模式,命令模式?設(shè)計模式問答3:狀態(tài)模式,策略模式,訪問者模式,適配器模式,享元模式?設(shè)計模式問答4:橋接模式,組合模式,裝飾者模式,外觀模式,職責鏈模式(COR),代理模式,模板模式?UML問答1:

2、UML部分1?UML問答2:UML部分2什么是解釋器模式?解釋器模式允許我們將語法解釋為代碼解決方案。好了,這意味著什么?語法會被映射到類,并形成解決方案。舉個例子,7-2能夠被映射到“cisMinus"類。一句話,解釋器模式為我們提供了一種解決方案,這個方案指導(dǎo)如何編寫一個解析語法并執(zhí)行代碼的解釋器。下而是一個解釋器的簡單例子,它能夠按照我們提供的日期格式語法,將日期解釋為對應(yīng)的代碼,并輸入正確的結(jié)果??谄谡Z法讓我們開始做圖“日期語法”屮所示的日期格式的解釋器。在開始Z前,我們要先理解一下解釋器模式中不同的組件,然后再來處理映射。上下文部分包含數(shù)拯,而邏輯部分包含將上下文中

3、數(shù)據(jù)轉(zhuǎn)換成可讀格式的轉(zhuǎn)換邏輯。上卜?文和邏輯讓我們看一卜?日期格式的語法是怎么定義的。定義任何語法的第一步,是把語法分解成小的邏輯組件。圖“語法映射與類的映射”展示了怎么識別這些組件,以及怎么映射到處理這部分語法的邏輯類上面。我們己經(jīng)把日期格式打斷成了4個組件,分別是月、日、年和分隔符。對這4個組件,我們將分別定義包含圖中展示的邏輯的類。然后,我們將為F1期格式的不同組件創(chuàng)建不同的類。語法映射與類的映射前面說過,有兩種類,一種是包含邏輯的表達式類,另一種是包含數(shù)據(jù)的上下文類,如圖“表達式和上下文類”屮所示。我們定義了不同類屮的表達式解析算法,這些類都從公共接口“ClsAbst

4、ractExpression”派生,并實現(xiàn)了"Evaluate"方法。"Evaluate"方法接收包含數(shù)據(jù)的上F文類作為參數(shù);它根據(jù)表達式邏輯來解析數(shù)據(jù)?!癈lsYearExpression”實例將“YYYY”替換成年份值,而"ClsMonthExpression”將“MM”替換成月份值,以此類推。解釋器類圖表達式和上下文類現(xiàn)在,我們有了單獨的表達式解析邏輯類,然后我們來看看客戶端會如何使用這個邏輯??蛻舳耸紫劝讶掌谡Z法格式傳遞給上下文類。依據(jù)日期格式,我們依次向集合中添加表達式實例。如果我們找到了“DD”,我們就添加一個“ClsDayExpression”實例;如果我們找到

5、了"MM”,就添加一個“ClsMonthExpression”實例,等等。最后,我們只需要遍歷集合,并調(diào)用"Evaluate"函數(shù)。所有的"Evaluate"函數(shù)執(zhí)行完之后,我們就顯示結(jié)果??蛻舳私忉屍鬟壿嬆隳芙忉尩髂J絾?迭代器模式允許在不暴露內(nèi)部代碼實現(xiàn)的情況下,順序訪問毎個元素。讓我們來理解一下。假設(shè)你有一個記錄集合,你需要順序遍歷每條記錄,并且需要保持當前訪問的位置,那么你需要的正是迭代器模式。這是最普通的設(shè)計模式,你會在不知不覺中用到它。在某些程度上,當你使用“foreach”(它允許我們逐個元素地訪問一個集合)時,你就已經(jīng)在使用迭代器模式了。迭代器業(yè)務(wù)邏輯在圖

6、“迭代器業(yè)務(wù)邏輯”中,我們使用“cisIterator”類來存放顧客類的集合。我們在“clsltcmtor”類內(nèi)部,定義了一個數(shù)組,和一個名稱為“FillObjects”的方法,這個方法用來加載數(shù)組的內(nèi)容。顧客集合數(shù)組是私冇的,顧客的數(shù)據(jù)可以通過數(shù)組的下標來訪問。因此我們定義了一組公有函數(shù),包含“getBylndex”(通過指定下表來訪問),“Prev”(得到集合屮前一個顧客數(shù)據(jù)),“Next”(得到集合中下一個顧客數(shù)據(jù)),“getFirst”(得到集合中第一個顧客數(shù)據(jù)),“gctSst”(得到集合中最后一個顧客數(shù)據(jù))。我們只對客戶端暴露這些函數(shù)。這些函數(shù)小心的順序遍歷集合,

7、并能夠記憶當前遍歷的索引。下面的圖“客戶遍歷邏輯”說明了該如何使用類“clslleralor”的實例"ObjIterator",顯示下一個、前一個、最后一個、第一個,以及通過索引顯示顧客數(shù)據(jù)??蛻舯闅v邏輯你能解釋調(diào)停者模式嗎?大多數(shù)吋候,項口小組件間的通訊都很復(fù)雜。因此組件間的邏輯關(guān)系也變得異常復(fù)雜。調(diào)停者模式幫助對象間用不互相關(guān)聯(lián)的方式來通訊,從而使復(fù)雜度最小化。調(diào)停者模式示例讓我們考慮圖“調(diào)停者模式示例”,它描述了i個需要使用調(diào)停者模式的真實場景。它是一個非常用戶友好的接口。它冇3個典型的場景。場景

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。