Objective-C 设计模式面试题解析与代码实现
在设计模式领域,Objective-C 作为一种广泛应用于 iOS 和 macOS 开发的编程语言,拥有丰富的设计模式应用。本文将围绕 Objective-C 设计模式面试题,结合代码示例,深入解析几种常见的设计模式,帮助读者在面试中更好地展示自己的技术能力。
1. 单例模式(Singleton)
单例模式确保一个类只有一个实例,并提供一个全局访问点。在 Objective-C 中,实现单例模式通常有以下几种方法:
1.1 使用静态变量和类方法
objective-c
@interface Singleton : NSObject
+ (instancetype)sharedInstance;
@end
@implementation Singleton
+ (instancetype)sharedInstance {
static Singleton instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
@end
1.2 使用全局变量
objective-c
static Singleton singletonInstance = nil;
+ (instancetype)sharedInstance {
if (singletonInstance == nil) {
singletonInstance = [[self alloc] init];
}
return singletonInstance;
}
2. 工厂模式(Factory Method)
工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。在 Objective-C 中,实现工厂模式通常有以下几种方法:
2.1 简单工厂模式
objective-c
@interface Product : NSObject
@end
@interface ConcreteProductA : Product
@end
@interface ConcreteProductB : Product
@end
@interface Factory : NSObject
+ (Product )createProduct;
@end
@implementation Factory
+ (Product )createProduct {
return [[ConcreteProductA alloc] init];
}
@end
2.2 工厂方法模式
objective-c
@interface Product : NSObject
@end
@interface ConcreteProductA : Product
@end
@interface ConcreteProductB : Product
@end
@interface Factory : NSObject
+ (id<Factory>)createFactory;
@end
@interface ConcreteFactoryA : NSObject <Factory>
+ (id<Factory>)createFactory;
@end
@implementation ConcreteFactoryA
+ (id<Factory>)createFactory {
return [[self alloc] init];
}
@end
@interface ConcreteFactoryB : NSObject <Factory>
+ (id<Factory>)createFactory;
@end
@implementation ConcreteFactoryB
+ (id<Factory>)createFactory {
return [[self alloc] init];
}
@end
3. 建造者模式(Builder)
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在 Objective-C 中,实现建造者模式通常有以下几种方法:
3.1 建造者模式
objective-c
@interface Builder : NSObject
@property (nonatomic, strong) Product product;
- (void)buildPartA;
- (void)buildPartB;
@end
@interface Director : NSObject
@property (nonatomic, strong) Builder builder;
- (void)construct;
@end
@interface Product : NSObject
@property (nonatomic, strong) NSString partA;
@property (nonatomic, strong) NSString partB;
@end
@implementation Builder
- (void)buildPartA {
self.product.partA = @"Part A";
}
- (void)buildPartB {
self.product.partB = @"Part B";
}
@end
@implementation Director
- (void)construct {
[self.builder buildPartA];
[self.builder buildPartB];
}
@end
4. 装饰者模式(Decorator)
装饰者模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更为灵活。在 Objective-C 中,实现装饰者模式通常有以下几种方法:
4.1 装饰者模式
objective-c
@interface Component : NSObject
- (void)operation;
@end
@interface ConcreteComponent : Component
@end
@interface ConcreteComponent () {
Component component;
}
@end
@implementation ConcreteComponent
- (instancetype)initWithComponent:(Component )component {
self = [super init];
if (self) {
_component = component;
}
return self;
}
- (void)operation {
if (_component) {
[_component operation];
}
}
@end
@interface Decorator : Component
@property (nonatomic, strong) Component component;
@end
@implementation Decorator
- (void)operation {
[self.component operation];
// 添加额外职责
}
@end
5. 总结
本文围绕 Objective-C 设计模式面试题,介绍了单例模式、工厂模式、建造者模式和装饰者模式。通过代码示例,帮助读者更好地理解这些设计模式在 Objective-C 中的实现方法。在实际开发中,灵活运用设计模式可以提高代码的可读性、可维护性和可扩展性。希望本文对您的面试和开发工作有所帮助。
Comments NOTHING