2010-01-18 7 views
0

Link to command patternPourquoi le client ne fait-il pas référence à l'invocateur dans le modèle de commande?

Pourquoi le client ne fait référence à l'invocateur quand il a des références à des récepteurs et concretecommands?

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); 
} 

Répondre

2

L'article wiki explique ainsi:

Le client instancie la commande objet et fournit les informations nécessaires pour appeler la méthode à plus tard le temps . L'appelant décide quand la méthode doit être appelée. Le destinataire est une instance de la classe qui contient le code de la méthode . Si je comprends bien votre question correctement, la réponse est la suivante:

+0

Danses autour de la racine de la question, le point est que Client et Invoker peuvent être découplés, le "principal" vient juste de créer et de les appeler tous les deux. –

1

Il existe une référence dans ce diagramme qui peut être tracée du client au demandeur. Si vous regardez, vous pouvez voir qu'il y a une ligne pointillée de Client à ConcreteCommand appelée "instantiate", puis une ligne de ConcreteCommand à Command, puis une ligne de Command à Invoker.

Si je comprends bien - cette ligne en pointillés représente la création des objets pour une utilisation ultérieure (comme vous pouvez le voir dans le code -. Ils sont créés dans le principal)

Questions connexes