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