Re: [問題] Design Pattern的使用

看板OOAD作者 (!H45)時間16年前 (2008/05/20 20:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《legnaleurc (CA)》之銘言: : 需求是這樣的 : 程式的Input和Output是各種不同的檔案格式 : 檔案根據格式不同會有不同的額外微調選項 : 而不同的格式也會去影響到使用者介面的外觀 : 目前我的想法是 : Controller是一個物件 : Input和Output做為Controller的template參數(C++) : 並被Controller繼承 : 類似policy一樣的東西 : 我對input和output都定義了一個接口給Controller使用 : 因此Controller可以正常地接受輸入和輸出的設定 : 但是現在問題出現了 : 輸入和輸出的設定,我不知道要怎麼和使用者介面溝通 既然不同的檔案格式擁有不一樣的設定方式 那麼使用者介面勢必難以完全相同,所以使用者在選擇其中一種格式之後 應該會得到與其他格式不盡相同的回應。 因此,根據不同的檔案格式來設計不同的使用者介面是有需要的。 : 具象一點地說 : 假設輸出格式可以是GIF或JPG : GIF可以調整交錯 : JPG可以調整壓縮率 : (我亂舉的,別在這裡吐嘈吧) : 但是使用者介面不可能把所有格式的選項全做在同一個視窗 : 我也不希望使用精靈式對話框 : 更重要的是在“介面”上的接口無法確定 如同上述所討論到的,使用者介面的接口在不同的檔案格式會有不用的樣貌 所以你的檔案控制器 (處理輸入的檔案至另一個檔案輸出) 也得針對不同的檔案格式有幾乎完全不同的處理方式 但是儘管有這麼多種的檔案控制器,程式應該一次只會有一種檔案的格式需要被處理 也就是說在執行期的時候,檔案控制器的實體只有一種 不應該會同時出現既要處理 JPEG 的輸出又要處理 GIF 的輸出 因此執行期可以決定你需要什麼樣的控制器實體 還有對應的檔案格式與使用者介面。 : 另外一個問題是 : 就算用某種方式得知型別資訊 : 必須要使用者按下“執行”按鈕後 : Controller才真正產生實體 : 但是我不知道要怎樣才能保存型別或是環境資訊 : 直到要使用的前一刻才實體化 : 問題有點冗長,如果有言不及義的地方請見諒 : 謝謝 如果控制器的目的是專一的 「處理輸入檔案產生輸出檔案」 那麼它可以擁有共同的介面: <<Interface>> Controller ______________________ + process(file: File, format: Format): File 待使用者決定需要什麼樣的檔案格式之後,再給予此控制器實體即可。 下一個問題是使用者介面,基本上我們的目標應該是得到檔案格式的資訊 所以這些使用者介面共通的目標就是回應我們最重要的檔案格式 <<Interface>> Layout ______________________ + getFormat(): Format 整個程式的呼叫方式如下: File input = getInputFile(); Layout layout = getLayout(); File output = getController().process(input, layout.getFormat()); 其中 input 是輸入的檔案 layout 是使用者介面 output 是輸出的檔案 -- 這樣有回答到您的問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.247.13
文章代碼(AID): #18CigNwu (OOAD)
文章代碼(AID): #18CigNwu (OOAD)