MST
星途 面试题库

面试题:Objective-C 中模板方法模式的基本结构是什么

请简要阐述在Objective-C语言环境下,模板方法模式由哪些主要角色构成,并结合代码示例说明每个角色的职责。
23.2万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

模板方法模式主要角色

  1. 抽象类(Abstract Class):定义了一个模板方法,这个方法定义了算法的骨架,由一系列基本方法组成。同时声明并实现部分基本方法,也可以声明一些抽象的基本方法,让子类去实现。
  2. 具体子类(Concrete Class):实现抽象类中声明的抽象基本方法,从而完成算法中特定步骤的实现。

代码示例

#import <Foundation/Foundation.h>

// 1. 抽象类
@interface AbstractClass : NSObject
// 模板方法
- (void)templateMethod {
    [self primitiveOperation1];
    [self primitiveOperation2];
    [self primitiveOperation3];
}
// 抽象基本方法
- (void)primitiveOperation1;
- (void)primitiveOperation2;
// 具体基本方法(子类可重写)
- (void)primitiveOperation3 {
    NSLog(@"AbstractClass's primitiveOperation3");
}
@end

@implementation AbstractClass
- (void)primitiveOperation1 {
    NSLog(@"AbstractClass's primitiveOperation1");
}
- (void)primitiveOperation2 {
    NSLog(@"AbstractClass's primitiveOperation2");
}
@end

// 2. 具体子类
@interface ConcreteClass : AbstractClass
- (void)primitiveOperation1;
- (void)primitiveOperation2;
@end

@implementation ConcreteClass
- (void)primitiveOperation1 {
    NSLog(@"ConcreteClass's primitiveOperation1");
}
- (void)primitiveOperation2 {
    NSLog(@"ConcreteClass's primitiveOperation2");
}
@end

在上述代码中:

  • AbstractClass:是抽象类,templateMethod 是模板方法,定义了算法骨架。primitiveOperation1primitiveOperation2 是抽象基本方法,由子类实现。primitiveOperation3 有默认实现,子类也可重写。
  • ConcreteClass:是具体子类,实现了 primitiveOperation1primitiveOperation2,完成了算法特定步骤的实现。通过这种方式,模板方法模式将算法的整体结构和具体实现细节分离,使得代码更具可维护性和扩展性。