本文共 1967 字,大约阅读时间需要 6 分钟。
观察者模式是一种常用的软件设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都能得到通知并自动更新。在Objective-C中,观察者模式可以通过协议(protocol)和类的方法来实现。
首先,我们需要定义一个观察者协议,所有观察者都需要实现这个协议。在Objective-C中,协议定义在头文件中,通常使用.h文件。以下是一个简单的观察者协议示例:
// Observer.h#import@protocol Observer- (void)update;@end
接下来,我们需要创建一个类来管理观察者列表,并实现观察者模式的核心逻辑。以下是一个示例类:
// Observer.h#import#import "Observer.h"@interface ObserverManager : NSObject@property (nonatomic, strong) id observer;- (void)registerObserver:(id )observer;- (void)removeObserver:(id )observer;- (void)notifyObservers;@end
我们需要创建一个实现了Observer协议的类,比如StockObserver。以下是一个示例:
// StockObserver.h#import#import "ObserverManager.h"#import "Observer.h"@interface StockObserver : NSObject @property (nonatomic, strong) NSString *symbol;- (id)initWithSymbol:(NSString *)symbol;- (void)update;@end
在ObserverManager类中,实现以下方法:
- (void)registerObserver:(id)observer { [self.observer = observer];}- (void)removeObserver:(id )observer { self.observer = nil;}- (void)notifyObservers { [self.observer update];}
在主类中,创建一个ObserverManager实例,并注册观察者:
// MainObjectiveCFile.m#import "MainObjectiveCFile.h"#import "ObserverManager.h"#import "StockObserver.h"@interface MainObjectiveCFile ()@property (nonatomic, strong) ObserverManager *observerManager;@property (nonatomic, strong) StockObserver *stockObserver;@end@implementation MainObjectiveCFile- (void)setup { self.stockObserver = [[StockObserver alloc] initWithSymbol:@"AAPL"]; self.stockObserver.update(); // 初始更新 [self.observerManager registerObserver:self.stockObserver];}- (void)updateStockPrice { // 更新股票价格 [self.stockObserver update]; [self.observerManager notifyObservers];}- (void)removeStockObserver { [self.observerManager removeObserver:self.stockObserver];} 通过上述步骤,我们成功实现了Objective-C中观察者模式的基本功能。观察者模式在实际应用中非常有用,尤其是在需要动态管理多个对象依赖关系的场景中。
转载地址:http://xbsfk.baihongyu.com/