美文网首页
iOS 不同的模块,使用相同的功能,调用不同的接口

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

作者: money_ac9e | 来源:发表于2021-03-02 14:34 被阅读0次

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

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

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

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

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

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

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

@interface DHPDFTmpSGBYHandler : NSObject<DHPDFTmplModuleProtocol>

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

@end

.m中会实现方法

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

模块B ,定义协议DHPDFTmpQQGZHandler

@interface DHPDFTmpQQGZHandler : NSObject<DHPDFTmplModuleProtocol>

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

@end

.m中会实现方法

- (void)uploadSignPdfTemplateItemsWithViewController:(UIViewController *)viewController
                                        arrMarkItems:(NSMutableArray<ModelPDFDrawingFileMark *> *)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 不同的模块,使用相同的功能,调用不同的接口

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

  • Python学习笔记 (常用模块)

    1. os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构...

  • Spring 中多个接口类名相同报错

    今天开发中一个功能,由于调用外部接口,同时引用了两个相同的RPC接口,这两个RPC接口,名称相同,路径不同,Spr...

  • 进程之os模块

    os模块 os 模块提供大量和系统相关的功能函数接口 os 模块的使用时系统相关的,在不同的系统中,可能使用方法不...

  • ovs qos

    ovs支持qos功能,其根据datapath类型调用不同的接口,对于kernel datapath,qos使用ke...

  • 三、多态

    (1)多态 <1>定义 多态:不同类型对象调用相同接口完成不同的行为。 根据对象的实际类型不同,可以自动完成不同的...

  • (八)接口自动化-ddt模块封装测试数据

    在接口测试过程中,针对同一个接口的测试往往只是数据不同,其他形式都相同,这种情况下就可以使用ddt模块,将类型相同...

  • golang接口替换

    // 不同接口类型包含相同方法,可替换使用。

  • 架构:服务化设计方案

    域名拆分 1 不同的模块服务使用不同的子域名 2 图片 音频 使用单独的域名 业务拆分 不同业务调用方案

  • 63 | 接口设计的准则

    什么是接口? 接口在不同的语义环境下,主要有两个不同含义(2)。 1、模块使用界面 KISS(Keep it Si...

网友评论

      本文标题:iOS 不同的模块,使用相同的功能,调用不同的接口

      本文链接:https://www.haomeiwen.com/subject/wbatqltx.html