游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3959|回复: 0

委托、事件、观察者模式、事件驱动程序设计(一)

[复制链接]

4

主题

4

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2016-3-10 19:53:24 | 显示全部楼层 |阅读模式
概述:
委托就像一个接口,具体方法实现这个接口,而我们只需要了解委托的定义就可以调用。
1.委托:
A.委托的作用:

     a.占位,让其他方法帮你做事-----解耦。
     b.将方法(一个或绑定后的多个方法)作为方法的参数-----封装方法。
B.委托的使用:
//将星爷电影国际化,实现双语orN语字幕
     public class SubTitle
     {
          public void English()
          {
               Debug.Log("What difference does it make between people and salty fish if men don‘t have dreams?");
          }
          public void Chinese()
          {
               Debug.Log("做人如果没有梦想跟咸鱼有什么分别?");
          }
          public static void Bird()
          {
               Debug.Log("bb bbbbbbbbbb bb?");
          }
     }
//鸟说:我也有梦想
    void BirdSay( LanguageDelegete la )
    {
        la ();
    }
     a.声明委托
     public void delegete LanguageDelegete();//注意委托的签名与绑定的方法要一致,这里没有参数
     b.创建Delegete对象
     LanguageDelegete allLanguage = new LanguageDelegete(Subtitle.Bird);   (另一种方法:LanguageDelegete allLanguage = Subtitle.Bird ;//代理静态方法)
     c.绑定多个方法(多路广播委托)
     BirdSay( allLanguage ); //将方法作为方法的参数使用

     subTitle = new Subtitle();
     allLanguage += subTitle . English;//代理实例方法
     allLanguage += subTitle . Chinese;//封装方法
     allLanguage -= Subtitle . Bird;
    d.调用委托
     allLanguage ();
输出:注意顺序

C.为什么要用委托:
    在C++中有函数指针,可以用来指向函数的引用,而C#中则没有,那怎么办呢?通过以上学习你会发现委托和指针十分相似,但是委托还具有函数指针所不具备的优点:在C++中我们经常遇到空指针等问题,而委托则不需要担心,即委托是面向对象,类型安全的,不用顾虑无效地址和地址越界等问题。下次我们继续为大家讲解事件机制。

    PS:其实语言只是个工具,学习以上这些知识其实都是在打磨你的工具,这样我们才能做出更加出色的产品,如果你的工具现在还是个铁杵,那么跟着我一起把它磨成针吧,只要坚持,总有一天你会编织出属于自己的梦想!!                                                                                                                                                   

如果你对独立游戏,体验艺术,设计学,心理学感兴趣, 欢迎关注我的新公众微信:黑客画家  我的主页:anchorart9.com ,我的一些学习笔记,心得,行业咨询等内容将逐步更新上去。

    下面是工程文件,自己有想法想要Test的可以直接下载:
  链接:http://pan.baidu.com/s/1jH0TXpO 密码:ylpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 11:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表