iOS外观模式

作者: 卢二牛 | 来源:发表于2018-02-09 16:48 被阅读0次

    外观模式(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]
    

    相关文章

      网友评论

        本文标题:iOS外观模式

        本文链接:https://www.haomeiwen.com/subject/pgxqtftx.html