iOS外观模式

外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。

iOS外观模式_第1张图片
外观模式


现在,实现一个简易的OC版本外观模式,目录如下:


iOS外观模式_第2张图片
外观模式目录结构
  1. Shape.h为定义需要实现的接口,目前只有一个测试方法-(void)draw;
#import 

@protocol Shape 
-(void)draw;
@end
  1. Circle和Square为实现了Shape.h接口的具体实现类,目前内部只实现了-(void)draw;
#import "Circle.h"

@implementation Circle
-(void)draw{
    NSLog(@"%s",__func__);
}
@end
#import "Square.h"

@implementation Square
-(void)draw{
    NSLog(@"%s",__func__);
}
@end
  1. ShapeManager为Facade外观提供类,统一各个子系统,为子系统中的一组接口提供一个一致的界面
#import 
#import "Circle.h"
#import "Square.h"

@interface ShapeManager : NSObject
-(void)drawSquare;
-(void)drawCircle;
@end
#import "ShapeManager.h"

@implementation ShapeManager
-(void)drawCircle{
    Circle *_circle = [[Circle alloc]init];
    [_circle draw];
}
-(void)drawSquare{
    Square *_square = [[Square alloc]init];
    [_square draw];
}
@end
  1. 外部使用就可以只导入ShapeManager,而不关心各子模块的复杂实现
- (void)viewDidLoad {
    [super viewDidLoad];
    ShapeManager *shapeManager = [[ShapeManager alloc]init];
    [shapeManager drawSquare];
    [shapeManager drawCircle];
}

打印如下:

2018-02-09 16:18:52.971337+0800 测试[32072:7644268] -[Square draw]
2018-02-09 16:18:52.971456+0800 测试[32072:7644268] -[Circle draw]
  • Demo

你可能感兴趣的:(iOS外观模式)