请教问题

09-02-03 dnydoney
    

本人 对设计模式不是很熟悉

现在 遇到一个问题。 我根据客户端发送过来的指令 来判断 执行不通的命令

比如

class A
{

public void getOrder(string order)
{
if(order == "1")
{
doSomething1()
}

if(order == "2")
{
doSomething2()
}

if(order == "3")
{
doSomething3()
}

....................


}

}

下面 还有很多这样的命令判断 而且还会不断的增加 我想用模式判断 请问各位怎么实现




[该贴被dnydoney于2009-02-03 18:00修改过]
[该贴被admin于2009-04-16 09:14修改过]

    

IceQi
2009-02-03 22:01

interface Command
{
void execute()throws Exception;
boolean isForOrder(String order);
}

class CommandA implements Command
{
public boolean isForOrder(String order)
{
return order.equals("1");
}
public void execute()throws Exception
{
// deal with order 1
}
}

class CommandB implements Command
{
public void execute()throws Exception
{
// deal with order 2
}

public boolean isForOrder(String order)
{
return order.equals("2");
}
}

方法有很多种,这里是其中的一个。今天太累了先写这点你看看,如果还有问题明天继续讨论。

dnydoney
2009-02-04 08:11

其实 我现在 遇到了一个四节 ,也是 我以前 遇到这种情况的很头疼的事情,在我获取 指令时,我需要不断的判断指令,比如 就是工厂模式 也存在这种情况,

比如


Command a = CommandB ()
Command a = CommandA ()
......................

如果我的指令最够多 ,是不是 我需要穷举所有的指令在这里,然后判断这个指令 是否执行

icyiwh
2009-02-04 11:03


public interface Command{
public void execute throws Exception;
}


/////具体的调用如下
Command cmdA = getCommand(orderID);
cmdA.execute();

说明:
关于getCommand(orderID)可以这样来实现:在配置文件里面配置orderID与对应的Command实例的对应关系,通过反映来加载生成对象
不知道这样行否
[该贴被icyiwh于2009-02-04 11:04修改过]