面试题答案
一键面试// 旧类
@interface OldClass : NSObject
- (void)oldMethod;
@end
@implementation OldClass
- (void)oldMethod {
NSLog(@"This is the old method.");
}
@end
// 适配器类
@interface Adapter : NSObject
- (void)newMethod;
@end
@implementation Adapter {
OldClass *_oldClass;
}
- (instancetype)init {
self = [super init];
if (self) {
_oldClass = [[OldClass alloc] init];
}
return self;
}
- (void)newMethod {
[_oldClass oldMethod];
}
@end
适配器模式在此场景中的作用:
- 复用已有代码:通过适配器模式,可以复用
OldClass
中现有的oldMethod
方法,无需对OldClass
进行修改,避免引入新的错误或破坏原有的功能。 - 解耦新旧系统:新系统通过
Adapter
的newMethod
方法调用OldClass
的功能,使得新系统与旧系统解耦,新系统不需要了解OldClass
的具体实现细节,只需要调用Adapter
提供的接口即可,增强了系统的可维护性和可扩展性。 - 接口适配:
Adapter
将旧接口(oldMethod
)适配成新系统期望的接口(newMethod
),解决了接口不兼容的问题,使得新旧系统能够协同工作。