オブザーバーデザインパターン(C#のデリゲートとイベントを使用して)

 再現

再現

再現

静的 ボイドメイン(文字列[]引数)
        { 
           
            マウスマウス = 新しいマウス(" 米奇"" 黄色" )。
            猫猫 = 新しい猫(" 米奇"" 黄色" 、マウス); 
            cat.CatCome(); 
            Console.ReadKey(); 
        }
// オブザーバである
    クラスキャット
    { 
        プライベート文字列_name;
         プライベート 文字列_Color、

        デリゲートの ボイド MyDelegate(); // カスタムデリゲート型、デリゲートをパッケージングする方法が値とのパラメータを返すことができない
        プライベート イベント MyDelegate CatComeEventHandlerを; // 使用デリゲートの宣言がイベントを定義します。しかし、デリゲートとイベントとそこには本質的な違いはありませんが、それは、クラス定義外のイベントではありません
        //にアクセスします。イベント、特別なデリゲート署名。
        パブリックキャット(文字列名、文字色、マウスマウス)
        { 
            この ._name = 名;
             この ._color = カラー、
             この+ = Mouse.MouseRun .CatComeEventHandler; // イベントを登録し、イベントがmouse.MouseRunの方法を指します
        } 

        公共 ボイドCatCome()
        { 
            Console.WriteLineを(" 名前:" + _name + " 猫の鳴き声" ); 
            CatComeEventHandler (); // イベントを登録するメソッドを呼び出して使用します。CatCome事件は、イベントが発生し、登録されました。これは、Observerパターンです。
        } 
    }
// ビューアの
    クラスマウス
    { 
        プライベート文字列_name;
         プライベート文字列_Color;
         公共マウス(文字列名、文字列の色)
        { 
            _name = 名; 
            _Color = 色; 
        } 
        パブリック 無効MouseRun()
        { 
            Console.WriteLineを(" という名前:" + + _name " げっ歯類エスケープ開始" ); 
        } 
    }

 

おすすめ

転載: www.cnblogs.com/macT/p/11783057.html