iOSの異なるモジュールは、同じ機能を使用して、異なるインターフェースを呼び出します.
3537 ワード
問題:会社は現在需要があります.モジュールAは機能Mが必要です.インターフェースはモジュールAのインターフェースを使います.モジュールBは機能Mを必要とし、インターフェースはモジュールBのインターフェースを使用する.
思考:異なるモジュールは同じ機能を使って、異なるインターフェースを呼び出して、ここでジャンプするインターフェースの展示と機能は同じで、最後にアップロードするのとは違って、プロトコルの考えを使って処理します.
コード:1>一つのプロトコルを定義します.DPDFTmpl ModuleProtocolの中にインタフェースがあります.アップロードに必要ないくつかのデータがあります.
イメージ.png
このようにそれぞれのモジュールの中で同じ方法が実現できます.異なる要求インターフェースを呼び出してももちろんtype値で区別できます.ただし、type値は一つのコントローラの中にあります.これを維持するのが簡単ではなく、メンテナンスが便利です.
思考:異なるモジュールは同じ機能を使って、異なるインターフェースを呼び出して、ここでジャンプするインターフェースの展示と機能は同じで、最後にアップロードするのとは違って、プロトコルの考えを使って処理します.
コード: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値は一つのコントローラの中にあります.これを維持するのが簡単ではなく、メンテナンスが便利です.