请教问题

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();
<p>

说明:

关于getCommand(orderID)可以这样来实现:在配置文件里面配置orderID与对应的Command实例的对应关系,通过反映来加载生成对象

不知道这样行否

[该贴被icyiwh于2009-02-04 11:04修改过]