デザインパターン----デューティチェーン

        今日、私たちはその後、文字通り本当に、私たちは説明せずに次の分割、責任と責任の連鎖を理解したい理解することは困難意味することは、彼らがする必要があるということです、デューティチェーン、Chain of Responsibilityパターンから学びますそれチェーン、チェーンが何であるか、チェーンがものです!我々は、すべての鎖は、一般的にリングの、ちょっと、からなるリングのサークルで構成することを知って、リングは、私たちのソフトウェアの世界のオブジェクトではありませんか?でも、それはリングのチェーンのような義務が一緒に接続されていること、それはなぜデューティチェーンことがあり、我々はChain of Responsibilityパターンを呼んで構成するであろう意味しますか?これは、よく分離することのデカップリングのために、ではないだけではない怠惰なものであることを、事の多重化のために、よく再利用するので、それらを責めないで、Chain of Responsibilityパターンは、(笑)怠惰であることを次の時間です、のは、どのように怠惰について近い話を見てみましょう。

        あなたはそれの非常に複雑なビジネスロジックを書かれている場合、私は知らないのですか?それはそれは、多くの場合、多くの場合、他とそれ以外のプラス書かれていませんか?最後に書き込まれたボリュームたっぷりの後の楽しみの特別な意味があるが、しかし、テストでは、あなたのロジック間違った家は、その後、書いた独自のコード、FMLを書くために振り返ることがわかりますどのような、そうでない場合は、ネストされたの層は、この問題を完全に解決していないが、人々は今日、ヒリヒリ頭皮責任の私達のプログラムチェーンを表示するには、しかし、責任の連鎖は、それは判断を欠いている考えて私たちを教えることができます。まあ、騒ぎ、私たちは、私たちがそれ?責任抽象はず、今日の話題、責任の連鎖に入りますか?チェーンのサークル、いや、これらは十分ではない、我々はオブジェクトの責任として抽象化する必要があり、コードを参照してください

抽象 クラスハンドラ
    { 
        保護ハンドラsueecssor。
        公共 ボイドSetSuccerssor(ハンドラsueecssor)
        { 
            この .sueecssor = sueecssor。
        } 
        パブリック 抽象 ボイドのhandleRequest(int型のリクエスト)。
    }

ハンドラの最初にすべての私たちが義務として今日たい抽象オブジェクトのクラス、私たちはその内部を見るにはsueecssor自身のプロパティの型を定義し、このプロパティがプライベートではないことに注意して、その目的は、何のためにあるのですか?実際には、ちょうど私たちのチェーンを構成するために、これは特にリンクする方法を、私たちは、次のコードを見て、私たちの義務リンクプロパティをあります

 クラスConcreteHandler1:ハンドラ
    { 
        公共 オーバーライド ボイドのhandleRequest(INTの要求)
        { 
            場合(要求> = 0 &&要求< 10 
            { 
                Console.WriteLineを(" {0}处理请求{1} " この.GetType()名前、要求。 ); 
            } 
            それ以外 の場合(sueecssor =!ヌル)sueecssor.HandleRequest(リクエスト)。

        } 
    }

        このConcreteHandler1のクラスは、我々は、ハンドラの抽象クラスはメソッドのhandleRequest抽象クラスを上書きします、我々は慎重にメソッドの中を見達成引数が入ってくるの条件を満たしていない場合は、お支払い方法を、私たちの次のハンドラを制御するための教え私たちは、クライアントによって理解することが呼ばれているようにそれは、私たちだけの抽象クラスsueecssorプロパティを介して、まだよく理解されていないことがあります

クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            ConcreteHandler1 concrete0 = 新しいConcreteHandler1()。
            ConcreteHandler1 concrete1 = 新しいConcreteHandler1(); 
            ConcreteHandler1 concrete2 = 新しいConcreteHandler1(); 
            concrete0.HandleRequest(9 )。
            concrete0.SetSuccerssor(concrete1)。
            concrete1.SetSuccerssor(concrete2)。
            Console.Read(); 
        } 
    }

       我々ConcreteHandler1は 3つのインスタンス、つまりconcrete0、concrete1、concrete2を宣言し、すべての最初の、私たちはクラスの責任を決定するために0で始まり、その後、判断するconcrete1を追加し、判断するconcrete2続く、これはチェーンのようではない、好きになるでしょうその一部をバックル?その後、我々はそれがサブクラスをインスタンス化する理由親クラスがそれを呼び出すことができると言いますか?まず、我々はインスタンス化ConcreteHandler1のそれはから継承されているので、クラスをハンドラ・クラス、それは最初、理由のサブクラスは親クラスのメソッドを使用することができます理由ですので、あなたは、サブクラスを作成することができ、抽象クラスを作成ハンドルに移動しますsueecssorプロパティの宣言は唯一のサブクラスで許可さ呼び出すことができるようになる前にそう、ここでは、保護されたとして宣言された、私たちの義務チェーンが完了しました

おすすめ

転載: www.cnblogs.com/liuhuimh/p/10964197.html