A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黑马程序员——oc语言学习心得——  代理模式

------Java培训Android培训iOS培训.Net培训、期待与您交流------
A: 声明代理、声明代理方法、声明接受代理的对象、调用代理方法。
B: 接受代理、实现代理方法。
实现代理得实现共同的协议 对象找实现这个协议代理对象 代理找厂家实现其功能

共同的协议
  1. @protocol ComputerInterface <NSObject>
  2. //共同的协议
  3. -(void)shanchang;
  4. -(void)sheji;

  5. //-sale
  6. @end
复制代码

复制代码
厂家实现协议中的方法 代理只负责销售
  1. #import <Foundation/Foundation.h>
  2. #import "ComputerInterface.h"
  3. //导入实现协议
  4. @interface IBM : NSObject<ComputerInterface>

  5. @end

  6. @implementation IBM
  7. -(void)shanchang{

  8.     NSLog(@"IBM生产电脑");

  9. }

  10. -(void)sheji{

  11.     NSLog(@"IBM设计电脑");


  12. }

  13. @end
复制代码

创建代理实例对象  创建厂家对象赋值给代理  买家找代理买东西

  1. int main(int argc, const char * argv[]) {
  2.     @autoreleasepool {
  3.         
  4.         IBM *ibm=[[IBM alloc]init];
  5.         
  6.         daili *dl=[[daili alloc]initWithVector:ibm];
  7.         [dl shanchang];
  8.         [dl sheji];
  9.         [dl sale];
  10.         //代理华硕
  11.         asus *as=[[asus alloc]init];
  12.         daili *dl2=[[daili alloc]initWithVector:as];
  13.         [dl2 shanchang];
  14.         [dl2 sheji];
  15.         [dl2 sale];
复制代码


------Java培训Android培训iOS培训.Net培训、期待与您交流------

1 个回复

倒序浏览
遵守特定协议的B是A的实例变量;才能说B可以作为A的代理.
你这里面工厂遵守了协议,那么工厂才是代理啊.   工厂帮你的daili实现了协议里的行为或者作为监听daili行为的人.
daili的代码没找到,代理模式还需要被代理人在方法中发送消息给代理者才可以.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马