Objective C 语言 设计模式面试题

Objective-C阿木 发布于 21 天前 5 次阅读


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 中的实现方法。在实际开发中,灵活运用设计模式可以提高代码的可读性、可维护性和可扩展性。希望本文对您的面试和开发工作有所帮助。