纯粹讨论:类似于电话自动答复,用哪种设计模式比较好? ( 积分: 200 )

  • 主题发起人 主题发起人 xiaoer
  • 开始时间 开始时间
X

xiaoer

Unregistered / Unconfirmed
GUEST, unregistred user!
比如要实现用户打电话后,按1查股市行情,按2下订单,按了2后后面还要提示按1输入代码,按2输入数量等。
要实现这样一个答复系统,用哪种设计模式比较好?
只考虑问题答复部分,即可能有不用的请求(即用户按的1、2、3),会得到不同的回答。
其中有些请求是向导式的,就是要输入多步骤数据才可以完成。
问题的解答可能会扩充,比如以前是股票,今天加了一个期货,则用户选择是期货操作后,接下来按的1、2、3都是新增加的期货类来回答的。
不好意思,描述的有些乱。。。:)
 
比如要实现用户打电话后,按1查股市行情,按2下订单,按了2后后面还要提示按1输入代码,按2输入数量等。
要实现这样一个答复系统,用哪种设计模式比较好?
只考虑问题答复部分,即可能有不用的请求(即用户按的1、2、3),会得到不同的回答。
其中有些请求是向导式的,就是要输入多步骤数据才可以完成。
问题的解答可能会扩充,比如以前是股票,今天加了一个期货,则用户选择是期货操作后,接下来按的1、2、3都是新增加的期货类来回答的。
不好意思,描述的有些乱。。。:)
 
用命令模式
将按钮操作同具体实现分离。
//基类
Tcommand=class
procedure B1;
//按下1
procedure B2;
//按下2
procedure B3;
...
procedure 确定 //按下确定
procedure 取消 //按下取消
end;

T菜单0=class(Tcommand);
//具体过程
procedure 功能1
procedure 功能2
...
procedure B1;
//按下1
procedure B2;
//按下2
procedure B3;
...
//实现继续来的方法
procedure B1;
//按下1
procedure B2;
//按下2
procedure 确定 //按下确定
procedure 取消 //按下取消
end;

T股市信息
{存贮中间值}
procedure 内容1;
procedure 内容2;
...
procedure B1;
//按下1
procedure B2;
//按下2
procedure 确定 //按下确定
procedure 取消 //按下取消
end;

在Tcommand具体类中记录中间状态,将根据新的命令创建新的类或改变状态。
界面中,将各个按钮同抽象基类的抽象方法绑定。
例如:
全局对象 gCmd:TCommand;
按钮1单击事件
procedure B1Click(Sender: TObject)
begin
gCmd.B1
end;

希望对你有帮助!

 
我也想做一个,在这里学习学习。
 
接受答案了.
 
后退
顶部