外观模式

阿呆终于坐上皇帝的宝座啦。手下有刑部、工部、吏部。。。等部门要管呢,每个部门又有#%#¥%……乱七八糟的系统。怎么办?很简单啦,一道圣旨解决问题,下面该怎么做就怎么做,我不管。


关系图:




代码如下:

// TaiJian.h   太监,传达皇帝指令
@interface TaiJian : NSObject

- (id)init;

- (void)neiZhengOne;// 内政方案一

- (void)neiZhengTwo;// 内政方案二

@end


// TaiJian.m 
#import "TaiJian.h"
#import "XingBu.h"
#import "GongBu.h"
#import "LiBu.h"

@implementation TaiJian
{
    XingBu *_xb;
    GongBu *_gb;
    LiBu *_lb;
}

- (id)init
{
    if(self = [super init])
    {
        _xb = [[XingBu alloc] init];
        _gb = [[GongBu alloc] init];
        _lb = [[LiBu alloc] init];
    }
    
    return self;
}

- (void)neiZhengOne
{
    NSLog(@"执行内政方案一:");
    [_xb jiaFa];// 刑部:加薪
    [_gb shuiLi];// 工部:修水利
    [_lb shengZi];吏部:升官
}

- (void)neiZhengTwo
{
    NSLog(@"执行内政方案二:");
    [_xb zhiDing];// 刑部:制定法律
    [_gb gaiLou];// 工部:盖楼房
    [_lb jiangZi];// 吏部:降职
}

// XingBu.h 刑部系统
@interface XingBu : NSObject

- (void)jiaFa;// 罚款

- (void)zhiDing;// 制定法律

@end

// XingBu.m  

static NSString *name = @"刑部";

@implementation XingBu

- (void)jiaFa
{
    NSLog(@"%@:每个人罚款10块",name);
}

- (void)zhiDing
{
    NSLog(@"%@:增加一条法律",name);
}

@end

// GongBu.h  工部系统
@interface GongBu : NSObject

- (void)shuiLi;

- (void)gaiLou;

@end

//GongBu.m

static NSString *name = @"工部";

@implementation GongBu

- (void)shuiLi
{
    NSLog(@"%@:修水利",name);
}

- (void)gaiLou
{
    NSLog(@"%@:造宫殿",name);
}

@end

// LiBu.h 吏部系统
@interface LiBu : NSObject

- (void)shengZi;// 升职

- (void)jiangZi;// 降职

@end

#import "TaiJian.h" // 阿呆皇帝
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    TaiJian *tj = [[TaiJian alloc] init];
    [tj neiZhengOne];// 执行方案一
    
    [tj neiZhengTwo];// 执行方案二
    
}


优点:

1.可以很好的封装子系统,留一个接口(太监)提供给客户(阿呆)使用

2.子系统也许错综复杂,用一个接口(太监),把流程(方案一、二)写好,一个函数调用就行,很方便

适用性:

1.当你要为一个复杂子系统提供一个简单接口时

2.客户端与实现需要分离,降低依赖性时,方便移植。如上皇帝与各部门中间隔了个太监,这样依赖性就降低了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值