Re: [問題] Design Pattern的使用
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章