JAVAのパターンに基づいて、コマンドデザインパターン

  • 入門

    送信者と実行者の完全なデカップリングの振る舞いをしてみましょう、ユーザーがコマンドを発行すると、コマンドを実行しようとしている人に注意を払うことなく、展開、および転送コマンドのために前方に来る人たちがあります。

     -receiver:命じアクションの実装

     -command:標準インターフェイスコマンド

     -ConcreteCommand:特定のコマンド

     トランスミッタは、コマンド、コマンドが含まれています-Invoker

  • クラス図

  

  • コード
パブリック インターフェースキッチナー{
     公共 ボイドクック(); 
} 

パブリック クラス BeefKitchenerが実装キッチナー{
     公共 ボイドクック(){ 
        System.out.printlnは( "做牛肉"が)。
    } 
} 

パブリック クラス ChickenKitchenerが実装キッチナー{
     公共 ボイドクック(){ 
        System.out.printlnは( "做烤鸡" )。
    } 
} 

パブリック インターフェイスコマンド{
     公共 ボイドは、実行(); 
}

パブリック クラス CookBeefCommandは実装し、コマンド{
     プライベートキッチナーキッチナーを。
    公共 ボイド実行(){ 
        キッチナー = 新しいBeefKitchener()。
        kitchener.cook(); 
    } 
} 

パブリック クラス CookChickenCommandは実装し、コマンド{
     プライベートキッチナーキッチナーを。
    公共 ボイドは、実行(){ 
        キッチナー = 新しいChickenKitchener()。
        kitchener.cook(); 
    } 
} 

パブリック クラスWaiterInvoker {
     プライベートコマンドコマンド; 

    公共 のボイドsetCommand(コマンドコマンド){
         この .command = コマンド。
    } 

    公共 ボイドアクション(){ 
        のCommand.Execute()。
    } 
} 

パブリック クラスメイン{
     公共 静的 ボイドメイン(文字列[]引数){ 
        WaiterInvoker waiterInvoker = 新しいWaiterInvoker()。
        コマンドコマンド = 新しいCookBeefCommand(); 
        waiterInvoker.setCommand(コマンド); 
        waiterInvoker.action();
    } 
}

おすすめ

転載: www.cnblogs.com/hbsdljz/p/11130245.html