1.コマンド・モードとは何ですか
モードコマンド(Commandパターン)は、モデルのタイプに属し、データ駆動型のデザインパターンです。被験体における介在物の形態、および呼び出し元にオブジェクトのリクエストコマンド。コマンドを処理することができます右のオブジェクトを見つけるために、オブジェクトを呼び出し、およびコマンドは、対応するオブジェクトへの最後のアウトを実行するコマンドが渡されます。
使用シナリオ:ローカルコマンドは、コマンドモードに使用できること。
2.コマンドモードの長所と短所
利点:1、システムは、結合の程度を減少させます。2、新しいコマンドを簡単にシステムに追加することができます。
短所:一部のシステムでは、あまりにも多くの特定のコマンドクラスを持っている可能性があり、コマンドモードを使用します。
3.典型的なケース
倉庫のうち製品は、図書館側の管理スタッフへのコマンドのスタッフが中に、ライブラリパーティの管理者の倉庫の商品のうちの指示に従って、財inとoutの指令を発行しました。
4.コードの実装
キーコード:3つの役割の定義:1、実際のコマンドの実行オブジェクト(ワーカー)2、コマンド(命令)3、エントリを使用して(会計)コマンドオブジェクト
ステップ1:コマンド・インタフェース(注文)を作成します
パッケージには、com.yx.demo.cmd。
/ **
*ご注文
*コマンド・インタフェース
*
* @author YX
* @date 2019年11月30日夜08時57分
* /
パブリックインターフェイス注文{
実行無効();
}
ステップ2:究極のコマンド実行オブジェクト(労働者)を作成します。
パッケージには、com.yx.demo.cmd。
/ **
*労働者
*
*コマンドの実際のオブジェクトを実行します
*
* @author YX
* @date 2019年11月30日夜10時06分
* /
パブリッククラスワーカー{
プライベート文字列名=「製品A」。
プライベートint型NUM = 5;
ます。public void importGoods(){
System.out.println( "製品[名:" +名+ "NUM: "+ NUM +"]インポート");
}
ます。public void exportGood(){
System.out.println( "製品[名:" +名+ "NUM: "+ NUM +"]輸出");
}
}
ステップ3:ご注文エンティティクラスのインタフェースは、着信用と出荷のための1つを作成します。
パッケージには、com.yx.demo.cmd。
/ **
* ImportGoods
*購入の手順
*
* @author YX
* @date 2019年11月30日夜10時19
* /
パブリッククラスImportGoods実装順序{
民間労働者mWorker。
公共ImportGoods(ワーカーワーカー){
this.mWorker =労働者。
}
@オーバーライド
公共ボイド(実行){
mWorker.importGoods();
}
}
パッケージには、com.yx.demo.cmd。
/ **
* ExportGoods
*出荷指示
*
* @author YX
* @date 2019年11月30日午後10時17分
* / 鄭州婦人科病院http://www.ytsgfk120.com/
パブリッククラスExportGoods実装順序{
民間労働者mWorker。
公共ExportGoods(ワーカーワーカー){
this.mWorker =労働者。
}
@オーバーライド
公共ボイド(実行){
mWorker.exportGood();
}
}
ステップ4は、財務マネージャークラス(財務担当)を作成します。
リーダーシップの使用のための指示と処理命令を受け入れるためのメイン処理。
パッケージには、com.yx.demo.cmd。
輸入はjava.util.ArrayList;
輸入はjava.util.List;
/ **
*財務
*倉庫マネージャー
*コマンドオブジェクトのエントリを使用します
*
* @author YX
* @date 2019年11月30日夜10時35
* /
パブリッククラス財務{
プライベートリストオーダーリスト=新しいArrayListを();
公共のボイドacceptOrder(受注オーダー){
orderList.add(オーダー)
}
ます。public void dealOrders(){
{:(オーダーリスト受注オーダー)について
order.execute();
}
orderList.clear();
}
}
ステップ5:デモデモ、財務マネージャー受諾の指示と処理命令
パッケージには、com.yx.demo.cmd。
/ **
* CommandPatternDemo
* Testクラス
*
* @author YX
* @date 2019年11月30日夜10時41分
* /
パブリッククラスCommandPatternDemo {
パブリック静的無効メイン(文字列[] args){
労働者の労働者=新しい労働者();
ImportGoodsのimportGoods =新しいImportGoods(労働者)。
ExportGoodsのexportGoods =新しいExportGoods(労働者)。
財務会計=新財務();
treasurer.acceptOrder(importGoods)。
treasurer.acceptOrder(exportGoods)。
treasurer.dealOrders();
}
}
例:特定の労働者を見つけるための要求財へのアクセス、およびImportGoodsとExportGoodsにパッケージ、会計の労働者がリーダーシップを気にしない何に対処する方法に対処するよう、財務省マネージャー財務処理に割り当てられたコマンドのリーダーシップのニーズ、商品倉庫マネージャへのアクセス命令を実行します。