协议模块化

现在的新项目实现了简单的协议模块化,即模块之前都是单独存在的,通过模块中心获取模块的提供者执行的。

大概就是每个模块有个 协议和协议提供者(主要就是实现协议里面的方法)

看看核心的代码

这是模块中心的 协议提供者
模块中心协议的代码
#import 

@protocol ModuleServiceProtocol 


/**
 获取每个协议的提供者实例

 @return nil
 */
+ (id)getModuleInstance;

@end

之后所有的模块声明的协议都遵循这个协议。方便共同的方法管理

提供者

#import 

#import "ModuleServiceProtocol.h"
#import "ModuleOneProtocol.h"
#import "ModuleTwoProtocol.h"

@interface ModuleServiceCenter : NSObject

+ (instancetype)shareCenter;

//根据协议注册对应提供者的方法
- (void)registerService:(Protocol *)protocol forProvider:(Class)provider;

//根据协议获取模块的提供者
- (id)getProviderByService:(Protocol *)protocol;

@end

具体的实现可以看gihub的代码https://github.com/rjb0514/ProtocolModuleDemo

每个模块都有自己的协议 跟提供者
控制器之间的跳转都是通过 协议及提供者来提供的
大概控制器之间的跳转代码如下

//首先从模块中心获取模块的提供者
    id provider = [[ModuleServiceCenter shareCenter]getProviderByService:@protocol(ModuleTwoProtocol)];
    //获取对应的控制器
    UIViewController *vc = [provider gotoTwoVCWithName:@"哈哈"];
    [self.navigationController pushViewController:vc animated:YES];


//传参数的话 就这么穿
- (id)gotoTwoVCWithName:(NSString *)name {
    TwoViewController *vc = [[TwoViewController alloc] init];
    vc.name = name;
    return vc;
}

先这么简单的介绍 之后看后续代码的优化 然后在记录下来
虽然现在的模块化还不够完整, 后续改进

你可能感兴趣的:(协议模块化)