Re: [問題] Design Pattern的使用

看板OOAD作者 (Alien)時間16年前 (2008/05/20 18:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《legnaleurc (CA)》之銘言: : 需求是這樣的 : 程式的Input和Output是各種不同的檔案格式 : 檔案根據格式不同會有不同的額外微調選項 : 而不同的格式也會去影響到使用者介面的外觀 : 目前我的想法是 : Controller是一個物件 : Input和Output做為Controller的template參數(C++) : 並被Controller繼承 : 類似policy一樣的東西 : 我對input和output都定義了一個接口給Controller使用 : 因此Controller可以正常地接受輸入和輸出的設定 : 但是現在問題出現了 : 輸入和輸出的設定,我不知道要怎麼和使用者介面溝通 : 具象一點地說 : 假設輸出格式可以是GIF或JPG : GIF可以調整交錯 : JPG可以調整壓縮率 : (我亂舉的,別在這裡吐嘈吧) : 但是使用者介面不可能把所有格式的選項全做在同一個視窗 : 我也不希望使用精靈式對話框 : 更重要的是在“介面”上的接口無法確定 : 另外一個問題是 : 就算用某種方式得知型別資訊 : 必須要使用者按下“執行”按鈕後 : Controller才真正產生實體 : 但是我不知道要怎樣才能保存型別或是環境資訊 : 直到要使用的前一刻才實體化 : 問題有點冗長,如果有言不及義的地方請見諒 : 謝謝 我的想法是, 每一種 "格式" 要自己 提供它的選項, 而 Main App 則負責管 理現有的 "格式", 並提供 interface 與使用者選擇格式. 當使用者選了某格式, Main App 便對 該格式取得其 "特有設定" 來顯示. 特有設定的提供方法, 簡單的做法是規定 格式 要提供一個 UI panel, 供 Main App 顯示出來然後 '格式' 自己負責讀取 '特 有設定 panel' 的資料 (Main App 只負責 把它顯示出來), 又或者複雜一點, "格式" 提出它要的額外設定, 比如說 "我要三個 extra fields, 第 1 叫 "interlace", 是 boolean 格式, 第 2 叫 "quality", 是 range select 格式, 上下限是多少, 第 3 個 field 叫 "comment", 是 text 格式, 最長多少 etc. 然後 Main App 負責把它們轉化成 UI (boolean 對映 check box, range select 對映 slider etc) Main App 取得結果再傳給 "格式" 這個做法整個架構會有點複雜, UI 也不 flexible 但 "格式" 的 development 則變得很容易. 其實我不太看得懂你的做法, 首先 Controller 的作用不明. 其次你說 input/output 是以 template parameter 的型式設與 controller, 但你要 知道 template 是 compile time 發生的, 你不可能 runtime 才把 input/output 的 class 傳給某 template (controller) 然後才 instantiate 它. (boost 也該有些 trick 做到類似的東西) 我也看不到為什麼你要用 template 來做. alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
文章代碼(AID): #18CgKpnt (OOAD)
文章代碼(AID): #18CgKpnt (OOAD)