举个例子,例如我们在封装数据库工具类,我们可能要会连接很多不同的数据库,例如sqlite3,mysql等。所以我们继承一个基类并不合理,但我们又要要求这些类要建立某些方法,所以可以实现匿名对象,返回一个遵守该协议的id对象。
EOCDatabaseConnection.h
@protocol EOCDatabaseConnection <NSObject>
@required
- (void)connect;
- (void)disConnect;
@end
EOCDatabaseManager.h
#import <Foundation/Foundation.h>
@protocol EOCDatabaseConnection;
@interface EOCDatabaseManager : NSObject
- (id<EOCDatabaseConnection>)connectionWithIdentifier:(NSString *)identifier;
@end
#import "EOCDatabaseManager.h"
#import "EOCDatabaseConnection.h"
@interface EOCDatabaseManager ()<EOCDatabaseConnection>
@end
@implementation EOCDatabaseManager
- (id<EOCDatabaseConnection>)connectionWithIdentifier:(NSString *)identifier
{
//调用协议的方法
[self connect];
return nil;
}
/*
* 实现协议的内容
*/
-(void)connect
{
}
-(void)disConnect
{
}
@end
网友评论