責任パターンは、オブジェクトの動作パターンです。責任チェーンモードでは、多くのオブジェクトが各オブジェクトの参照によって接続され、次の家にチェーンを形成します。チェーン上のオブジェクトがリクエストの処理を決定するまで、このチェーンにリクエストが渡されます。このリクエストを行うクライアントは、チェーン上のどのオブジェクトがリクエストを処理するかを知りません。これにより、システムはクライアントに影響を与えることなく責任を動的に再編成および割り当てることができます。
責任チェーンモデルは、行動設計モデルの1つです。責任チェーンを理解する方法は?責任チェーンは、最初と最後にいくつかのオブジェクトを接続すると理解できます。各ノードはオブジェクトであり、各オブジェクトは、オブジェクトが処理要求の終了に応答するまで、異なる処理ロジックに対応します。このモデルは責任チェーンモデルになります。
人生の責任チェーンモデルのプロトタイプを見つけることができますか?この種の例はたくさんあります。たとえば、家を購入したい場合、最初のことは営業担当者(アプリケーション1)があなたを受け取ることです。 3%の割引が必要な場合は、問題はありません。この時点で、営業担当者は3%の割引を与える権限を持ち、営業担当者(アプリケーション1)がそれを処理します。この時点で、金持ちが来て、10ユニットを購入したいと言い、5%の割引を求めました。販売スタッフ(アプリケーション1)には、5%の割引を与える権限がありませんでした。彼は、優れたリーダー、セールスディレクター、セールスディレクター(アプリケーション2)に申請しなければなりませんでした。この時、国民の夫であるシャオ・ワンが来ました。 Xiao Wangは、すべての物件を10%購入したと言いました。現時点では、セールスディレクター(ターゲット2)にはそれほど多くの権限がなく、CEOからの承認を申請する必要がありました。
言い換えれば、各顧客は営業担当者によって受け取られます。顧客はさまざまな権限を提案し、営業担当者はそれを配信のために異なるオブジェクトに引き渡します。クライアントは、どのオブジェクトがリクエストを処理するかを気にしません。これにより、送信者とリクエストの受信者との結合関係が減少します。
以下では、事業旅行の旅行費用承認を例として使用して、次の責任チェーンモデルを実装し、最初に抽象的なリーダーシップクラスを定義します。
パッケージcom.test.demo;パブリックアブストラクトクラスリーダー{保護されたリーダーNextherler; //以前のリーダーシップパブリックファイナルボイドハンドラーレクエスト(int money){if(money <= limet()){// selse {if(nexthandler!= null){nexther.handlerRequest(money); /**承認*/パブリックアブストラクトボイドハンドラー(int money); }これは抽象的なクラスです。以下は、いくつかのクラスを通じてそれを継承します。まず、グループリーダークラス:
パッケージcom.test.demo;パブリッククラスのgroupleaderはリーダーを拡張します{public int limit(){return 1000; //チームリーダーには1,000元承認機関があることを示します} public void handler(int money){system.out.println( "チームリーダーは承認されました"+マネー); }}スーパーバイザーカテゴリ:
パッケージcom.test.demo;パブリッククラスディレクターはリーダーを拡張します{@override public int limit(){return 5000; } @Override public void Handler(int money){System.out.println( "監督者が承認した"+Money); }}マネージャーカテゴリ:
パッケージcom.test.demo;パブリッククラスマネージャーはリーダーを拡張します{@Override public int limit(){return 10000; } @Override public void Handler(int money){System.out.println( "マネージャーが承認した"+Money); }}ボスカテゴリ:
パッケージcom.test.demo;パブリッククラスのCEOはリーダーを拡張します{@Override public int limit(){return integer.max_value; } @Override public void Handler(int money){System.out.println( "CEO承認済み"+Money); }}ボスに制限はありません。これは、旅行の払い戻しを申請するスタッフのXiao Zhangの定義です。
パッケージcom.test.demo; Public Class Xiaozhang {public static void main(string [] args){groupleader groupleader = new groupleader();ディレクターディレクター=新しいディレクター();マネージャーマネージャー= new Manager(); CEO CEO = new CEO(); groupleader.nexthandler = director; director.nexthandler = manager; Manager.nexthandler = ceo; groupleader.handlerRequest(50000); groupleader.handlerRequest(500); groupleader.handlerRequest(5000); }}Xiao Zhangは、チームリーダーのような3つのトランザクションを申請しました。この時点で、操作の例は次のとおりです。
さまざまな資金が異なるオブジェクトによって処理されていることがわかります。 Xiao Zhangは誰がそれらを扱うのか気にしません。彼はチームリーダーを見つける必要があります。これは、責任チェーンモデルの特性です。
これは、Java責任チェーン設計モデルに関連するコンテンツを導入するためのすべてです。それがあなたに役立つことを願っています!