iOS的中介者设计模式

1 新建一个类 AbstractColleague

编写代码

#import <Foundation/Foundation.h>

@class AbstractColleague;

@protocol ColleagueDelegate <NSObject>


@optional

-(void)colleagueEvent:(AbstractColleague *)event;


@end

@interface AbstractColleague : NSObject

@property (nonatomic,weak) id<ColleagueDelegate> delegate;

@end

然后新建一个AbstractMediator

#import "AbstractColleague.h"

@interface AbstractMediator : NSObject<ColleagueDelegate>

@end

构建一个中介类型 TypeOneAbstractMediator

#import "Colleague.h"

@interface TypeOneAbstractMediator : AbstractMediator

@property (nonatomic,strong) Colleague *colleagueA;


@property (nonatomic,strong) Colleague *colleagueB;

@property (nonatomic,strong) Colleague *colleagueC;

/****
  查看信息
*/
-(NSDictionary *)values;
@end

@implementation TypeOneAbstractMediator

-(void)colleagueEvent:(AbstractColleague *)event
{
    if ([event isEqual:self.colleagueA]) {
        
        self.colleagueB.value  = self.colleagueA.value*2;
        
        self.colleagueC.value  = self.colleagueA.value*4;
    }else   if ([event isEqual:self.colleagueB]) {
        
        self.colleagueA.value  = self.colleagueB.value/2;
        
        self.colleagueC.value  = self.colleagueB.value*2;
    }else
    { self.colleagueA.value  = self.colleagueC.value/4;
       self.colleagueB.value  = self.colleagueC.value/2;
    }
}


-(NSDictionary *)values
{
    return @{@"A":@(self.colleagueA.value),@"B":@(self.colleagueB.value),@"C":@(self.colleagueC.value)};
}
@end

新建一个model对象类

#import "AbstractColleague.h"

@interface Colleague : AbstractColleague

@property(nonatomic) float value;


/**
  修改数值
*/

-(void)changeValue:(float) value;

@end


@implementation Colleague

-(void)changeValue:(float) value
{
    self.value = value;
    if (self.delegate&&[self.delegate respondsToSelector:@selector(colleagueEvent:)]) {
        [self.delegate colleagueEvent:self];
    }
}

@end

在需要的地方调用

@interface ViewController ()

@property (nonatomic,strong) TypeOneAbstractMediator *mediator;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    self.mediator = [TypeOneAbstractMediator new];

    Colleague *colleagueA = [Colleague new];
    
     Colleague *colleagueB = [Colleague new];
    
     Colleague *colleagueC = [Colleague new];
    
    self.mediator.colleagueA = colleagueA;
    
    self.mediator.colleagueB = colleagueB;
    
       self.mediator.colleagueC = colleagueC;
    
    colleagueA.delegate =    self.mediator;
    [colleagueA changeValue:2.0];
    NSLog(@"========%@",[self.mediator values]);
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值