iOS外观模式

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

外观模式


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


外观模式目录结构
  1. Shape.h为定义需要实现的接口,目前只有一个测试方法-(void)draw;
#import <Foundation/Foundation.h>

@protocol Shape <NSObject>
-(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 <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
  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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 生活中的示例## 外观模式在现实生活中的示例很多,比如:组装电脑,通常会有两种方案。 一个...
    七寸知架构阅读 6,285评论 7 57
  • 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义 一个高层接口,这个接口使得这一子系统...
    泥孩儿0107阅读 183评论 0 0
  • 目录 本文的结构如下: 什么是外观模式 模式的结构 代码示例 优点和缺点 适用环境 模式应用 模式扩展 补充 一、...
    w1992wishes阅读 647评论 0 1
  • 一、模式定义 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子...
    端木轩阅读 3,653评论 2 2
  • 正月里暖热炕 读写人家作者:白峰 正月里正月正,正月里来是新年,新年大家很休闲,走亲戚,串朋友,逛街道,进公园,在...
    读写人家阅读 618评论 0 1