您的位置:首页 > 运维架构 > 网站架构

iOS架构初探

2017-03-27 00:00 176 查看
首先我们明确架构设计的目: 就是通过解耦让我们更好的管理和维护代码,下面通过一个简单的例子初步体验一下

传统方法

管理员和和员工相互引用,

Employee.h
@interface Employee : NSObject
+(instancetype)shareInstance;
- (void)doPrintJob;
@end
```

```
Employee.m
#import "Employee.h"
#import "Manager.h"
@implementation Employee
+(instancetype)shareInstance{
static Employee *e = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
e = [[Employee alloc]init];
});
return e;

}

- (void)doPrintJob{

NSLog(@"print");
[[Manager shareInstance] celebratePrintDone];

}

@end

```
```
Manager.h
@interface Manager : NSObject

+(instancetype)shareInstance;
- (void)beginPrintTask;
- (void)celebratePrintDone;
@end
```
```
Manager.m
#import "Manager.h"
#import "Employee.h"
@implementation Manager
+(instancetype)shareInstance{
static Manager *m = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
m = [[Manager alloc]init];
});

return m;

}
- (void)beginPrintTask{
[[Employee shareInstance] doPrintJob];
}
- (void)celebratePrintDone{

NSLog(@"celebrate print done");
}

```

###Delegate
管理员引用员工

Employee声明协议,和方法.
任务完成后通知Manager
```
Employee.h
@protocol EmployeePrintDelegate <NSObject>

- (void)printTaskDone;
@end
@interface Employee : NSObject
@property (nonatomic, weak) id<EmployeePrintDelegate> delegate;
@end
```
```
- (void)doPrintJob{

NSLog(@"print");//判断代理是否实现方法 如果有再执行
if (_delegate && [_delegate respondsToSelector:@selector(printTaskDone)]) {
[_delegate printTaskDone];
}

```

Manager 遵循协议,实现代理方法获取消息

```
#import "Manager.h"
#import "Employee.h"
@interface Manager()<EmployeePrintDelegate>

@end
@implementation Manager
+(instancetype)shareInstance{
static Manager *m = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
m = [[Manager alloc]init];
});

return m;

}
- (void)beginPrintTask{
[Employee shareInstance].delegate = self;
[[Employee shareInstance] doPrintJob];
}
-(void)printTaskDone{
[self celebratePrintDone];

}
- (void)celebratePrintDone{

NSLog(@"celebrate print done");
}
@end
```

>  下一篇讲究经典的MVC架构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息