你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS App應用設計形式中的模板辦法形式開辟的示例

iOS App應用設計形式中的模板辦法形式開辟的示例

編輯:IOS開發綜合

模板辦法形式的焦點思惟就是經由過程把不變的行動搬移到超類,去除子類中的反復代碼來表現它的優勢。其實,模板辦法形式就是供給了一個很好的代碼復用平台。

起首,照樣先簡略看一下界說:

模板辦法形式,界說一個操作中的算法的骨架,而將一些步調延遲到子類中。模板辦法使得子類可以不轉變一個算法的構造便可重界說該算法的某些特定步調。

上面和給年夜家展現一下類的構造圖:

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615492394.jpg (500×262)

其實,構造很簡略,只要兩層關系,焦點思惟就是把公共辦法向上提到父類中。代碼完成起來也不龐雜。上面照樣老模樣,向年夜家簡略展現一下代碼若何完成。

起首是一個protocol,相當於java裡的interface:

// 初始化劇本協定 
@protocol YLSInitialScript <NSObject> 
 
- (void) doInit:(YLSClientInfo*) clientInfo; 
 
@end 

然後界說一個籠統類,完成這個接口的整體框架性算法,然則詳細的完成聲明為籠統辦法:

@interface YLSInitialScriptTemplate : NSObject<YLSInitialScript> 
 
-(id) initOrigin:(YLSInitialOperator *)operator; 
 
// 籠統辦法,由子類完成 
- (void) createEverythingForFirstTime; 
- (void) update; 
- (NSString*) stepMsg; 
 
@end 


@implementation YLSInitialScriptTemplate 
 
YLSInitialOperator *origin; 
 
-(id) initOrigin:(YLSInitialOperator *)operator 

    origin = operator; 
    return self; 

 
- (void) doInit:(YLSClientInfo*) clientInfo 

    if ([clientInfo shouldInit]) { 
        [self createEverythingForFirstTime];// 無表,初始化 
    } else if ([clientInfo shouldUpdate]) { 
        [self update];// 進級 
    } 
    [origin notifyStepDone:[self stepMsg]];// 告訴Bootstrap View Controller刷新進度條 

 
// 以下3個是籠統辦法,延遲到子類完成 
- (void) createEverythingForFirstTime 

    [self doesNotRecognizeSelector:_cmd]; 

 
- (void) update 

    [self doesNotRecognizeSelector:_cmd]; 

 
- (NSString*) stepMsg 

    [self doesNotRecognizeSelector:_cmd]; 
    return nil; 

 
@end 

最初是詳細的子類,不須要從新完成協定裡劃定的doInit()辦法,只需完成籠統類裡的3個籠統辦法便可以了:

@interface YLSServiceDataInitScript : YLSInitialScriptTemplate 
 
@end 


@implementation YLSServiceDataInitScript 
 
- (void) createEverythingForFirstTime 

    // 詳細邏輯 

 
- (void) update 


 
- (NSString*) stepMsg 

    // 詳細邏輯 

 
@end 

語法沒有java裡這麼清晰,症結就是在籠統類裡用

[self doesNotRecognizeSelector:_cmd]; 

這行代碼完成相似java中abstract症結字的後果
最初是完成挪用的客戶端代碼:

        scripts = [NSMutableArray new]; 
         
        // 須要履行的劇本順次添加鄙人面 
        [scripts addObject:[[YLSShowDataInitScript new] initOrigin:self]]; 
        [scripts addObject:[[YLSServiceDataInitScript new] initOrigin:self]]; 
        [scripts addObject:[[YLSMemberDataInitScript new] initOrigin:self]]; 
        [scripts addObject:[[YLSBillDataInitScript new] initOrigin:self]]; 
        [scripts addObject:[[YLSEmployeeDataInitScript new] initOrigin:self]]; 
        [scripts addObject:[[YLSBackupDataInitScript new] initOrigin:self]]; 
 
for (int i = 0; i < [scripts count]; i++) { 
        [[scripts objectAtIndex: i] doInit:clientInfo]; 
    } 

【iOS App應用設計形式中的模板辦法形式開辟的示例】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved