美文网首页
行为型之十-模板方法

行为型之十-模板方法

作者: iOS_肖晨 | 来源:发表于2017-09-30 15:46 被阅读6次

    Template Method(模板方法)

    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    当我们要完成在某个细节层次一致的一个过程或者一系列步骤,但是其个别步骤的更详细的层次上实现可能不同时,我们通常考虑用模板方法模式来处理。

    VC.h

    //HCDtextpaper定义了两个问答题的不变部分(题目),子类定义了变化部分(答案)。
    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.破坏了那个生物圈的生态平衡 d.造成该地区沙漠化");
        NSLog(@"答案:%@", [self answer2]);
    }
    -(NSString *)answer2{
        return nil;
    }
    @end
    

    HCDtextPaperA.m // 子类A

    @implementation HCDtextPaperA
    -(NSString *)answer1{
        return @"b";
    }
    -(NSString *)answer2{
        return @"c";
    }
    @end
    

    设计图

    相关文章

      网友评论

          本文标题:行为型之十-模板方法

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