iOS 通过协议提供匿名对象
来源:互联网 发布:linux编译安装mysql 编辑:程序博客网 时间:2024/06/05 17:38
应用场景: 有时对象类型 并不重要,重要的是 对象有没有实现某些方法,在此情况下级可以使用 匿名类型 来表达这一概念。
例子如下:
#import <Foundation/Foundation.h>
@protocol EOCDatabaseConnection;
@interface EOCDatabaseManager :NSObject
+ (id)sharedInstance;
- (id<EOCDatabaseConnection>)connectionWithIdentifier:(NSString *)identifier;
@end
@protocol EOCDatabaseConnection <NSObject>
- (void)connect;
- (void)disconnect;
- (BOOL)isConnected;
- (NSArray *)performQuery:(NSString *)query;
@end
在本例子中 处理数据库连接所用的后端代码 可能使用了 各种第三方库 俩连接不同的数据库 可能是SQlite 可能是 MySQL 等由于这些类 多在第三方库中,没有办法令所有的类都继承自同一个基类。 实际上我们创建了 匿名对象 我们并不关心她的类型 只关心 是否遵循了相应的协议。 id<EOCDatabaseConnection> 就是 匿名对象。 在开发后续版本的时候无须 改变公共的API 。即可切换后端的实现类。
阅读全文
0 0
- iOS 通过协议提供匿名对象
- 写高质量OC代码52建议总结:28.通过协议提供匿名对象
- 通过匿名内部类创建对象
- 通过Http协议传递对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 匿名对象
- 关于BIO和NIO的理解
- PHP坑之:大整数相加
- Euler Project 29
- 序言
- 推荐算法的回顾总结
- iOS 通过协议提供匿名对象
- C++程序员学Java系列之三: 从Hello World! 开始
- 微信运动修改步数方法
- JS实现unicode和UTF-8互转
- Struts2--拦截器
- 数据类型:Undefined,Null——JavaScript知识小结05
- kmp深入
- 在Python结构体中存储值
- 多外部中断的优先级配置