为什么客户端在命令模式中没有引用调用者?

时间:2010-01-18 18:56:28

标签: design-patterns uml

Link to command pattern

为什么客户端在引用接收者和具体命令时没有引用调用者?

public static void main(String[] args) 
{
    StockTrade stock = new StockTrade();
    BuyStockOrder bsc = new BuyStockOrder (stock);
    SellStockOrder ssc = new SellStockOrder (stock);
    Agent agent = new Agent(); //<-- The invoker is right there yet it is not
                               // in the diagram?

    agent.placeOrder(bsc);
    agent.placeOrder(ssc);
}

2 个答案:

答案 0 :(得分:2)

wiki文章解释为:

  

客户端实例化该命令   对象并提供信息   需要稍后调用 方法   时间。调用者决定什么时候   方法应该被调用。 接收器   是类的一个实例   包含方法的代码。

答案 1 :(得分:1)

如果我理解你的问题是正确的,答案是这样的。

该图表中有一个可以从客户端跟踪到Invoker的引用。如果你看,你可以看到从Client到ConcreteCommand的虚线叫做“instantiate”,然后是ConcreteCommand到Command的一行,然后是从Command到Invoker的一行。

据我所知 - 这条虚线表示创建对象供以后使用(从代码中可以看出 - 它们是在main中创建的。)