通过协议来实现匿名对象

举个例子,例如我们在封装数据库工具类,我们可能要会连接很多不同的数据库,例如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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,848评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,638评论 25 709
  • 在没有接触《非暴力沟通》这本书之前,我和他人的交流差不多一直以自我为导向。 非暴力沟通要求我们相同乐于互助。核心是...
    触手可及的星星阅读 352评论 0 2
  • 昨天我学会了弹舌,跟着周峰儿子说的,弹舌,这个问题困扰了我很久了,我终于学会了弹舌,看来每个人都能成为我的老师。 ...
    水玲珑英子阅读 171评论 0 1
  • 创意字母5
    LLL_Lynne阅读 170评论 1 0