作者H45 (!H45)
看板OOAD
标题Re: [问题] Design Pattern的使用
时间Tue May 20 20:56:54 2008
※ 引述《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