iOSの異なるモジュールは、同じ機能を使用して、異なるインターフェースを呼び出します.

3537 ワード

問題:会社は現在需要があります.モジュールAは機能Mが必要です.インターフェースはモジュールAのインターフェースを使います.モジュールBは機能Mを必要とし、インターフェースはモジュールBのインターフェースを使用する.
思考:異なるモジュールは同じ機能を使って、異なるインターフェースを呼び出して、ここでジャンプするインターフェースの展示と機能は同じで、最後にアップロードするのとは違って、プロトコルの考えを使って処理します.
コード:1>一つのプロトコルを定義します.DPDFTmpl ModuleProtocolの中にインタフェースがあります.アップロードに必要ないくつかのデータがあります.
///      (  、  。。。)
/// @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>1つのコントローラを定義するDPDFTmplControllerには、上記のプロトコルを使用する必要があると定義されています.
+ (instancetype)PDFTmplControllerWithModel:(ModelPDFDrawingFile *)drawingFile
                                   handler:(id)handler
                           ignoreFileCache:(BOOL)ignoreFileCache;
3>プロトコルモジュールAを実現し、プロトコルDPDFTmp SGBYHandlerを定義する.
@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は、プロトコルDPDFTmpQGZHandlerを定義する.
@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.最後に成形したコードは簡潔で清潔で、メンテナンスに便利です.
イメージ.png
このようにそれぞれのモジュールの中で同じ方法が実現できます.異なる要求インターフェースを呼び出してももちろんtype値で区別できます.ただし、type値は一つのコントローラの中にあります.これを維持するのが簡単ではなく、メンテナンスが便利です.