代理模式 之案例
2015-10-01 12:03
330 查看
案例 去北京….
Person.h
Person.m
Car.h
Car.m
Horse.h
Horse.m
ZaiRenProtocol.h
main.m
效果:
Person.h
#import <Foundation/Foundation.h> #import "ZaiRenProtocol.h" @interface Person : NSObject @property(nonatomic,copy)NSString *name; @property(nonatomic,strong)id<ZaiRenProtocol> trafficTool; - (void)goToBeiJing; @end
Person.m
#import "Person.h" @implementation Person - (void)goToBeiJing { NSLog(@"走喽"); [self.trafficTool zaiRen]; } @end
Car.h
#import <Foundation/Foundation.h> #import "ZaiRenProtocol.h" @interface Car : NSObject <ZaiRenProtocol> @end
Car.m
#import "Car.h" @implementation Car - (void)zaiRen { NSLog(@"小汽车晃晃悠悠的前进了"); } @end
Horse.h
#import <Foundation/Foundation.h> #import "ZaiRenProtocol.h" @interface Horse : NSObject <ZaiRenProtocol> @end
Horse.m
#import "Horse.h" @implementation Horse - (void)zaiRen { NSLog(@"不捉急,很快就到"); } @end
ZaiRenProtocol.h
#import <Foundation/Foundation.h> @protocol ZaiRenProtocol <NSObject> - (void)zaiRen; @end
main.m
#import <Foundation/Foundation.h> #import "Person.h" #import "Car.h" #import "Horse.h" int main(int argc, const char * argv[]) { Horse *horse = [Horse new]; Car *car = [Car new]; Person *p1 = [Person new]; p1.trafficTool = car; [p1 goToBeiJing]; p1.trafficTool = horse; [p1 goToBeiJing]; return 0; }
效果:
相关文章推荐
- 两侧固定中间自适应三栏布局
- 开发基于Java的图形用户界面
- 黑马程序员——OC语言基础---对象和方法
- tinyPng Photoshop Plugin 安装的坑
- 转个堆与栈的区别
- 11-java学习笔记-反射
- POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法
- POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法
- 初探Java类加载机制
- KMP算法初探
- java篇 【7】方法(函数)的声明及使用
- 使用批处理bat作为日期系统日期的前三天
- 设计模式-----观察者模式(Obsever)
- _范例讲解:一对多关系
- Unity 获得Log
- 自定义UIActionSheet
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- Mysql安装各种问题
- swift开发笔记9 - 正向和反向页面传参
- 贝叶斯算法