Template Method(模板方法)
定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中磨德。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟豁鲤。
當(dāng)我們要完成在某個(gè)細(xì)節(jié)層次一致的一個(gè)過程或者一系列步驟茎杂,但是其個(gè)別步驟的更詳細(xì)的層次上實(shí)現(xiàn)可能不同時(shí),我們通忱砼欤考慮用模板方法模式來處理逞力。
VC.h
//HCDtextpaper定義了兩個(gè)問答題的不變部分(題目),子類定義了變化部分(答案)糠爬。
HCDtextPaper *paperA = [[HCDtextPaperA alloc]init];
[paperA testQuestion1];
[paperA testQuestion2];
HCDtextPaper *paperB = [[HCDtextPaperB alloc]init];
[paperB testQuestion1];
[paperB testQuestion2];
HCDtextPaper.h // 基類
@interface HCDtextPaper : NSObject
- (void)testQuestion1;
- (NSString *)answer1;
- (void)testQuestion2;
- (NSString *)answer2;
@end
HCDtextPaper.m
@implementation HCDtextPaper
-(void)testQuestion1{
NSLog(@"問題:楊過得到寇荧,后來給了郭靖,煉成倚天劍执隧、屠龍刀的玄鐵可能是[ ]:a.球磨鑄鐵 b.馬口鐵 c.高速合金鋼 d.碳素纖維");
NSLog(@"答案:%@", [self answer1]);
}
-(NSString *)answer1{
return nil;
}
-(void)testQuestion2{
NSLog(@"問題:楊過揩抡、程英、陸無雙鏟除了情花殴玛,造成[ ]:a.使這種植物不再害人 b.使一種珍稀物種滅絕 c.破壞了那個(gè)生物圈的生態(tài)平衡 d.造成該地區(qū)沙漠化");
NSLog(@"答案:%@", [self answer2]);
}
-(NSString *)answer2{
return nil;
}
@end
HCDtextPaperA.m // 子類A
@implementation HCDtextPaperA
-(NSString *)answer1{
return @"b";
}
-(NSString *)answer2{
return @"c";
}
@end