代理
2015-12-13 13:17 AB小博客 阅读(179) 评论(0) 收藏 举报// main.m #import <Foundation/Foundation.h> #import "computerInterface.h" #import "IBM.h" #import "ComputerDalegate.h" #import "Lenovo.h" /* 1.代理和被代理要实现同一个借口 2.代理要引用被代理 3.客户找代理 公共接口 被代理 <--------- 代理 IBM | | 客户 */ int main(int argc, const char * argv[]) { @autoreleasepool { //1.客户找代理 IBM *ibm = [[IBM alloc]init]; Lenovo *lenovo = [[Lenovo alloc]init]; ComputerDalegate *dalegate = [[ComputerDalegate alloc]initWithVector:lenovo]; [dalegate designComputer]; [dalegate produceComputer]; [dalegate saleComputer]; } return 0; }
// // computerInterface.h 公共接口 #import <Foundation/Foundation.h> @protocol computerInterface <NSObject> //1.设计电脑 -(void)designComputer; //2.生产电脑 -(void)produceComputer; @end
// // Lenovo.h #import <Foundation/Foundation.h> #import "computerInterface.h" @interface Lenovo : NSObject<computerInterface> @end // // Lenovo.m #import "Lenovo.h" @implementation Lenovo -(void)designComputer{ NSLog(@"Lenovo设计电脑。。。"); } -(void)produceComputer{ NSLog(@"Lenovo生产电脑..."); } @end
// // IBM.h #import <Foundation/Foundation.h> #import "computerInterface.h" @interface IBM : NSObject<computerInterface> @end // // IBM.m #import "IBM.h" @implementation IBM -(void)designComputer{ NSLog(@"设计电脑。。。"); } -(void)produceComputer{ NSLog(@"生产电脑..."); } @end
代理商
// // ComputerDalegate.h #import <Foundation/Foundation.h> #import "computerInterface.h" @interface ComputerDalegate : NSObject<computerInterface> { id<computerInterface> vector; } -(void)saleComputer; -(instancetype)initWithVector:(id<computerInterface>)vector; @end // // ComputerDalegate.m #import "ComputerDalegate.h" @implementation ComputerDalegate -(instancetype)initWithVector:(id<computerInterface>)v{ if (self=[super init]) { self->vector = v; } return self; } -(void)saleComputer{ NSLog(@"销售电脑"); } -(void)designComputer{ [self->vector designComputer]; } -(void)produceComputer{ [self->vector produceComputer]; } @end
浙公网安备 33010602011771号