iOS 不同的模块,使用相同的功能,调用不同的接口

问题:公司目前有一个需求,模块A需要功能M,接口使用模块A的接口。模块B需要功能M,接口使用模块B的接口。

思考:不同的模块使用相同的功能,调用不同的接口,
这里跳转的界面展示和功能是一样的,就是最后上传不一样,
使用协议的思路来处理。

代码:
1>定义一个协议 DHPDFTmplModuleProtocol
里面有接口上传需要的一些数据

/// 上传 操作(签字、签字。。。)
/// @param viewController
/// @param arrMarkItems 相关操作
/// @param successHandler 成功回调
/// @param failureHandler 失败回调
- (void)uploadSignPdfTemplateItemsWithViewController:(UIViewController *)viewController
                                        arrMarkItems:(NSMutableArray *)arrMarkItems
                                      successHandler:(void (^)(BOOL afterSuccessClose))successHandler
                                      failureHandler:(void (^)(void))failureHandler;

2>定义一个控制器 DHPDFTmplController
里面定义好需要使用上面使用的协议

+ (instancetype)PDFTmplControllerWithModel:(ModelPDFDrawingFile *)drawingFile
                                   handler:(id)handler
                           ignoreFileCache:(BOOL)ignoreFileCache;

3>实现协议
模块A ,定义协议DHPDFTmpSGBYHandler

@interface DHPDFTmpSGBYHandler : NSObject

+ (instancetype)PDFTmpSGBYHandlerWithTaskMimeId:(NSString *)task_mime_id
                                       function:(PDFDrawingFunction)function;

@end

.m中会实现方法

- (void)uploadSignPdfTemplateItemsWithViewController:(UIViewController *)viewController
                                        arrMarkItems:(NSMutableArray *)arrMarkItems
                                      successHandler:(void (^)(BOOL afterSuccessClose))successHandler
                                      failureHandler:(void (^)(void))failureHandler

模块B ,定义协议DHPDFTmpQQGZHandler

@interface DHPDFTmpQQGZHandler : NSObject

+ (instancetype)PDFTmpSGBYHandlerWithTaskMimeId:(NSString *)task_mime_id
                                       function:(PDFDrawingFunction)function;

@end

.m中会实现方法

- (void)uploadSignPdfTemplateItemsWithViewController:(UIViewController *)viewController
                                        arrMarkItems:(NSMutableArray *)arrMarkItems
                                      successHandler:(void (^)(BOOL afterSuccessClose))successHandler
                                      failureHandler:(void (^)(void))failureHandler

4>使用
模块A中 使用

DHPDFTmpSGBYHandler *hander = [DHPDFTmpSGBYHandler PDFTmpSGBYHandlerWithTaskMimeId:temModel.task_mime_id function:functions];
        DHPDFTmplController *controller = [DHPDFTmplController PDFTmplControllerWithModel:temModel.getPdfFileModel handler:hander ignoreFileCache:YES];

模块B中 使用

DHPDFTmpQQGZHandler *hander = [DHPDFTmpQQGZHandler DHPDFTmpQQGZHandlerWithTaskMimeId:file.task_mime_id function:functions];
DHPDFTmplController *controller = [DHPDFTmplController PDFTmplControllerWithModel:model.getPdfFileModel handler:hander ignoreFileCache:YES];

5.最后成型的代码
简洁 干净 便于维护


image.png

这样在各自模块中就可实现相同的方法,调用不同的请求接口
当然也可以使用type值区分,只不过type值是在一个控制器中,不方便维护
这个更简洁 更便于维护

你可能感兴趣的:(iOS 不同的模块,使用相同的功能,调用不同的接口)