通过协议来实现匿名对象

2018-01-30  本文已影响7人  Fight_Code

举个例子,例如我们在封装数据库工具类,我们可能要会连接很多不同的数据库,例如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
上一篇下一篇

猜你喜欢

热点阅读