2014-01-14 62 views
1

我和朋友正在讨论一个简单命令处理器的设计 - 接受字符串命令,分割它并查找关键字(添加,减去等),执行这些命令并返回结果。到现在为止还挺好。不同模式的命令处理器的设计模式

但是现在如果想要命令处理器处于不同模式(复杂模式,实模式等)时相同的命令以不同的方式工作。

在这里可以使用哪种设计模式,请记住,未来应该很容易添加更多关键字和模式?

回答

0

关于设计模式的好处是它们的名字描述了他们解决的问题。所以,你应该检查Command pattern

Command模式是其中一个目的是用来表示和封装在稍后的时间调用 方法所需的所有信息 行为的设计模式。该信息包括方法名称, 对象,该对象拥有方法参数的方法和值。

命令模式由命令,接收器,调用者和客户端组成。

模式对象对你来说特别有趣,因为你想添加执行模式。

Invoker对象保存有关命令执行的信息,并且有责任为命令执行不同的模式。

+0

当谷歌搜索时,我确实遇到过命令模式,但不知道如何包含模式。你建议每个命令都应该实现每个模式,然后调用者对象使用一个if else梯子来处理处理器所在的chick whick模式并执行命令obect中的一个方法?但是我想避免使用其他梯子,因为添加更多模式变得不方便。你能详细介绍一下模式吗? – user3194749

+0

对于每种模式创建类:模式1,模式2等。对于每个模式类执行执行功能的命令。 class command {void execute(Mode1 m1); void execute(Mode2 m2); ...}使用命令和模式对象invoke.process(command,mode1)调用invoke对象。并且内部处理函数调用适当的命令模式:execute(mode1)。你会避免if-s和重载的情况。 – user987339