ios大话 观察者模式(Observer)

观察者模式(Observer),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

这里写图片描述

就像这个图所示
定义抽象通知者

Subject

@interface HCDSubject : NSObject
//这里很不合理,不知怎么办
//@property(nonatomic,readwrite,strong)NSMutableArray *observerList;
-(void)attach:(id<HCDObserver>)observer;
-(void)detach:(id<HCDObserver>)observer;
-(void)notify;
-(NSArray *)getobserverList;
@end

讲解:
需要传入通知对象股票观察者 nba观察者
这两个观察者抽象为抽象观察者接口 ,他们之前通过继承实现相互的关系

抽象观察者 我们定义成协议即可实现约束接口

@protocol Observer <NSObject>
@optional
-(void)update;
@end

NBA观察者

#import "Observer.h"
@interface NBAObserver :NSObject<Observer>
@end

#import "NBAObserver.h"

@implementation NBAObserver
-(void)update{
    NSLog(@"擦,老板回来了,待会儿继续看NBA");
}
@end

Stock观察者

#import "StockObserver.h"

@implementation StockObserver
-(void)update{
    NSLog(@"操。。老板回来了,带会儿再看");
}

//
//  HCDSubject.m
//  9观察者模式
//
//  Created by yifan on 15/8/13.
//  Copyright (c) 2015年 黄成都. All rights reserved.
//

#import "HCDSubject.h"

@interface HCDSubject ()
@property(nonatomic,readwrite,strong)NSMutableArray *observerList;
@end


@implementation HCDSubject
-(instancetype)init{
    self = [super init];
    if (self) {
        _observerList = [NSMutableArray array];
    }
    return self;
}

-(void)attach:(id<HCDObserver>)observer{
    [self.observerList addObject:observer];
}
-(void)detach:(id<HCDObserver>)observer{
    for (id<HCDObserver> currentObserver in [self getobserverList]) {
        if (currentObserver == observer) {
            [self.observerList removeObject:observer];
        }
    }
}
-(NSMutableArray *)getobserverList{
    return [NSMutableArray arrayWithArray:self.observerList];
}
-(void)notify{

}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值