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]);
}