Objective C 语言 设计模式解析

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


Objective-C 设计模式解析

设计模式是软件工程中解决常见问题的通用解决方案。在Objective-C编程语言中,设计模式同样扮演着重要的角色,它可以帮助开发者写出更加模块化、可重用和易于维护的代码。本文将围绕Objective-C语言,解析几种常见的设计模式,并给出相应的代码示例。

单例模式(Singleton)

单例模式确保一个类只有一个实例,并提供一个全局访问点。在Objective-C中,单例模式通常通过静态方法实现。

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;


}

- (instancetype)init {


if (self = [super init]) {


// 初始化代码


}


return self;


}

@end


工厂模式(Factory Method)

工厂模式定义了一个接口,用于创建对象,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

objective-c

@protocol VehicleFactory <NSObject>

- (Vehicle )createVehicle;

@end

@interface CarFactory : NSObject <VehicleFactory>

@end

@implementation CarFactory

- (Vehicle )createVehicle {


return [[Car alloc] init];


}

@end

@interface TruckFactory : NSObject <VehicleFactory>

@end

@implementation TruckFactory

- (Vehicle )createVehicle {


return [[Truck alloc] init];


}

@end


观察者模式(Observer)

观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

objective-c

@interface Observer : NSObject

- (void)updateWithValue:(NSString )value;

@end

@interface Subject : NSObject

@property (nonatomic, strong) NSArray<Observer > observers;

- (void)notifyObserversWithValue:(NSString )value;

@end

@implementation Subject

- (void)notifyObserversWithValue:(NSString )value {


for (Observer observer in self.observers) {


[observer updateWithValue:value];


}


}

@end

@implementation Observer

- (void)updateWithValue:(NSString )value {


// 更新逻辑


}

@end


策略模式(Strategy)

策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。

objective-c

@protocol Strategy <NSObject>

- (void)execute;

@end

@interface ConcreteStrategyA : NSObject <Strategy>

@end

@implementation ConcreteStrategyA

- (void)execute {


// 实现A策略


}

@end

@interface ConcreteStrategyB : NSObject <Strategy>

@end

@implementation ConcreteStrategyB

- (void)execute {


// 实现B策略


}

@end

@interface Context : NSObject

@property (nonatomic, strong) Strategy strategy;

- (void)setStrategy:(Strategy )strategy;

- (void)executeStrategy;

@end

@implementation Context

- (void)setStrategy:(Strategy )strategy {


_strategy = strategy;


}

- (void)executeStrategy {


if (_strategy) {


[_strategy execute];


}


}

@end


总结

设计模式是软件工程中不可或缺的一部分,Objective-C作为一门成熟的编程语言,同样支持多种设计模式。通过合理运用设计模式,可以提升代码的可读性、可维护性和可扩展性。本文介绍了单例模式、工厂模式、观察者模式、策略模式和策略模式,并给出了相应的代码示例。希望这些内容能够帮助读者更好地理解和应用Objective-C设计模式。