外觀模式(Facade Pattern):外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的外觀對象進(jìn)行,為子系統(tǒng)中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。外觀模式又稱為門面模式,它是一種對象結(jié)構(gòu)型模式。

外觀模式
現(xiàn)在,實現(xiàn)一個簡易的OC版本外觀模式,目錄如下:

外觀模式目錄結(jié)構(gòu)
- Shape.h為定義需要實現(xiàn)的接口,目前只有一個測試方法
-(void)draw;
#import <Foundation/Foundation.h>
@protocol Shape <NSObject>
-(void)draw;
@end
- Circle和Square為實現(xiàn)了Shape.h接口的具體實現(xiàn)類,目前內(nèi)部只實現(xiàn)了
-(void)draw;
#import "Circle.h"
@implementation Circle
-(void)draw{
NSLog(@"%s",__func__);
}
@end
#import "Square.h"
@implementation Square
-(void)draw{
NSLog(@"%s",__func__);
}
@end
- ShapeManager為Facade外觀提供類,統(tǒng)一各個子系統(tǒng),為子系統(tǒng)中的一組接口提供一個一致的界面
#import <Foundation/Foundation.h>
#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
- 外部使用就可以只導(dǎo)入ShapeManager,而不關(guān)心各子模塊的復(fù)雜實現(xiàn)
- (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]