zoukankan      html  css  js  c++  java
  • Delegate示例

    我们先看一个代理的示例,通过这个示例我们进一步的了解代理的用法(这个示例可以直接运行):

    示例:半夜,一个房子里,猫大叫,主人惊醒,老鼠吓跑!

                  分析:首先我们得有个房子,房子里有一只猫,有个主人,还有一只老鼠(可能很多,呵呵呵)。猫有个叫的方法,主人有个惊醒的方法,老鼠有个吓跑的方法,当猫一叫,触发主人惊喜的方法和老鼠吓跑的方法。所以我们在猫的类里边放一个代理,代理的是主人惊醒的方法和老鼠吓跑的方法,当老鼠一叫,我们只需要调用这个代理就行了。

    那么我们就看下边的代理:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace DelegateDemo

    {

        class mian

        {

           

            public static void Main(string[] args)

            {

                //初始化房子这个对象

                House house = new House();

                house.CheckCatCry();

            }

        }

        class House

    {

        //房子里有猫,主人和老鼠三个对象

            private Cat cat = new Cat();

            private Human human = new Human();

            private Mouse mouse = new Mouse();

            public House()

            {

                //在构建房子时就应该把主人惊醒和老鼠吓跑的方法挂上,因为只有在一个房子里,才有可能发生半夜,一个房子里,猫大叫,主人惊醒,老鼠吓跑!这件事。

                cat.catcry = new Cat.CatCryDelegate(human.JingXing);

                cat.catcry += new Cat.CatCryDelegate(mouse.Pao);

            }

    public void CheckCatCry()

            {

                Console.WriteLine("猫叫了么?(1:叫了,2:没叫)");

                string result = Console.ReadLine();

                if (cat != null)

                {

                  // 如果猫叫了

                    if (result.Equals("1"))

                    {

                        cat.Cry();

                    }

                }

            }

      }

        class Cat

    {

         //代理声明

            public delegate void CatCryDelegate();

             //初始化代理变量

            public CatCryDelegate catcry;

            public Cat()

            {

            }

             //猫大叫的方法

            public void Cry()

            {

                Console.WriteLine("猫:哇,喵,哇,喵喵!");

                //猫大叫会触发主人惊醒,和老鼠吓跑两件事,这里我们已经在初始化房子的时候已经放到了代理(Catcry)里了,这里只需要触发这个代理就行了。

                catcry();

            }

    }

    //主人类

        class Human

    {

    //主人的惊醒方法

            public void JingXing()

            {

                Console .WriteLine ("主人:死猫别叫!");

            }

    }

    //老鼠类

       class Mouse

    {

    //老鼠的逃跑的方法

            public void Pao()

            {

            Console.WriteLine ("老鼠:猫来了,快跑!");

            }

        }

    }

  • 相关阅读:
    WordPress怎么禁用古滕堡编辑器(Gutenberg)
    .Net Framework 4.0安装cmd命令
    Windows服务器一键要打开多个软件或一键关闭多个软件
    Photosho 切换英文版教程
    解决宝塔面板无法停止Tomcat方法
    只要系统镜像就能制作可启动安装系统U盘
    [网摘]分享一段流量劫持JS代码
    Script http跳https
    linux系统 标准目录及其内容
    centos7 永久修改主机名
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/1612603.html
Copyright © 2011-2022 走看看