代理设计模式,真是挺耐人寻味的,感觉很让人捉摸不透又感觉很有趣的东西!因为原本捉摸不透的代码,方法,披上代理的外衣后,就很有道理,很有意思了!
各种设计模式,让本来很死板的代码变得灵活多变,各种功能可以在大大简化代码的情况下实现。大大方便了编程工作。
来一个简单的代理实现案例:
这个代理运用的地方是在一个UI界面中(类似新浪手机客户端的界面),点击自定义tabBar中自定按钮,以达到切换窗口控制器的目的。
1.首先要是要明确谁要做谁的代理,对象A如果是对象B的代理,谁是对象A,谁是对象B。
这里,我们是让控制器作为自定义tabBar的代理。
2. 代理中,需要记住的关键是在发出代理请求的类(A)中声明代理人(B)的实例变量,这样就可以保证A 能通过调用B中B代理的方法来完成B代理的事情,即自己代理给B 的事情。
废话不多说,直接上代码:
//这里tabBar发出代理请求,并且声明代理的实例变量(delegate)。
//通知代理,按钮被点击,如果代理(控制器)实现了代理方法,tabBar就可以调用代理(控制器)中的代理方法来完成控制器代理的事情,即tabBar代理给控制器的事情。
3.代理模式的关键点:
A完成一件事,但是自己不能完成,于是他找个代理人B 替他完成这个事情,他们之间便有个协议(protocol),B继承该协议来完成A代理给他的事情。
控制器继承了代理协议,实现代理方法。