面试题答案
一键面试类簇组成部分及作用
- 抽象基类
- 作用:作为类簇的核心抽象,定义了类簇中所有具体子类共享的接口和行为规范。它通常不被直接实例化,而是为子类提供一个通用的框架,使得客户端代码可以通过这个抽象接口来操作类簇中的不同具体类型,实现多态性。例如,
NSNumber
类就是一个抽象基类,它定义了获取数字值等一系列通用接口,而NSNumber
的具体子类(如表示整数的NSCFNumber
等)根据不同的数据类型实现这些接口。
- 作用:作为类簇的核心抽象,定义了类簇中所有具体子类共享的接口和行为规范。它通常不被直接实例化,而是为子类提供一个通用的框架,使得客户端代码可以通过这个抽象接口来操作类簇中的不同具体类型,实现多态性。例如,
- 具体子类
- 作用:继承自抽象基类,负责实现抽象基类定义的接口,以提供特定的功能和行为。每个具体子类针对不同的场景或数据类型进行优化。比如
NSString
类簇中的NSCFString
(不可变字符串的具体实现类)和NSMutableString
(可变字符串类,继承自NSCFString
的一个子类),NSCFString
针对不可变字符串的特性进行实现,而NSMutableString
在NSCFString
基础上增加了字符串可修改的功能,以满足不同字符串操作需求。
- 作用:继承自抽象基类,负责实现抽象基类定义的接口,以提供特定的功能和行为。每个具体子类针对不同的场景或数据类型进行优化。比如
- 工厂方法
- 作用:一般定义在抽象基类中,是创建类簇中具体对象的入口点。通过这些工厂方法,客户端代码无需了解具体子类的细节,就能获得合适的对象实例。工厂方法根据传入的参数或其他运行时条件,决定创建哪个具体子类的实例。例如,
NSNumber
类的numberWithInt:
等方法就是工厂方法,它们根据传入的整数类型,创建对应的NSNumber
具体子类实例来表示该整数。这样使得客户端代码与具体子类解耦,提高了代码的可维护性和扩展性。
- 作用:一般定义在抽象基类中,是创建类簇中具体对象的入口点。通过这些工厂方法,客户端代码无需了解具体子类的细节,就能获得合适的对象实例。工厂方法根据传入的参数或其他运行时条件,决定创建哪个具体子类的实例。例如,