接触委托 代理 delegate很久啦。除了看API,Kotoba也给我讲了 。说到委托,拿下面这个小例子比较好。(14年6月26花花给我的练习)

实例:写一个方法A,定义个方法B(打印hello),和方法C(打印world),其中我只允许调用方法A。实现,1秒后打印出hello,3秒后打印出world。

先说一下回调的好处:

  在开发中我们有些代码呢,是很固定的,但又有一些东西很灵活很容易发生变动。先假设B和C都不是我们自己写的,而是其他人已经写好的其他方法,所以我们在无BUG的情况下,尽可能不去修改别人的方法,这个时候方法A是我们自己写的,我们有个需求那就是1秒后调用方法B,3秒后调用方法C,这就是现在的写法。 可能我需求增加之后呢,类似的代码会越来越多。比如4秒后执行方法D,但突然哪天你觉得方法A执行的太慢了,改了下时间,改为0.5秒,那对后面几个方法都要改,这样会很麻烦。然后我们稍加改动,这样修改方法B的时间也不会影响其他方法的执行。

 

public delegate void DeleMethod();

void Start()
{
   StartCoroutine(FunA(2,FunB)); 
   StartCoroutine(FunA(3,FunC));           
}

IEnumerator FunA(float time ,DeleMethod  m)
{
      yield return new WaitForSeconds(time);
      m();  
}  

void FunB()
{
   print("hello");
}

void FunC()
{
   print("world");
}

  

posted on 2014-08-10 22:17  小贝公主  阅读(110)  评论(0)    收藏  举报