码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之外观模式

时间:2015-10-19 12:29:12      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

在做一些大型的应用时可能会采用分布式通过系统集成来进行数据的流动,例如ERP系统,它就会分人力资源系统,进销存系统,财务系统等,而在这些系统中可能会又有几个子系统,在这系统之间难免会有数据的流动,但每个系统内部也比较复杂。比如几个分公司分布部署有一套ERP系统,总部可能要在月底做一月结,如果直接调用这些子系统那样会非常的麻烦, 那要怎么解决呢?外观模式就是一个不错的选择。

一、定义:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

二、结构图

     技术分享

三、适用场景及优缺点

      在以下情况下可以考虑使用外观模式:
     (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
     (2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
     (3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
     优点:
   (1)实现了子系统与客户端之间的松耦合关系。
   (2)客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

四、实现

#import <Foundation/Foundation.h>

@interface SystemA : NSObject
-(void)UserInfoFromSystemA;
-(void)BackUpSystemA;
@end
#import "SystemA.h"

@implementation SystemA
-(void)UserInfoFromSystemA
{
    NSLog(@"获取SystemA的用户信息");
}
-(void)BackUpSystemA
{
    NSLog(@"备份SystemA的信息");
}
@end
#import <Foundation/Foundation.h>

@interface SystemB : NSObject
-(void)UserInfoFromSystemB;
-(void)BackUpSystemB;
@end
#import "SystemB.h"

@implementation SystemB

-(void)UserInfoFromSystemB
{
    NSLog(@"获取SystemB的用户信息");
}
-(void)BackUpSystemB
{
     NSLog(@"备份SystemB的信息");
}
@end
#import <Foundation/Foundation.h>

@interface Facade : NSObject
-(void)UserInfo;
-(void)BackUp;
@end
#import "Facade.h"
#import "SystemA.h"
#import "SystemB.h"

@implementation Facade
-(void)UserInfo
{
    NSLog(@"获取所有的用户信息");
    SystemA *systemA=[[SystemA alloc]init];
    [systemA UserInfoFromSystemA];
    
    SystemB *systemB=[[SystemB alloc]init];
    [systemB UserInfoFromSystemB];
}
-(void)BackUp
{
    NSLog(@"备份所有的信息");
    SystemA *systemA=[[SystemA alloc]init];
    [systemA BackUpSystemA];
    
    SystemB *systemB=[[SystemB alloc]init];
    [systemB BackUpSystemB];
}
@end

五、效果

技术分享

 

设计模式之外观模式

标签:

原文地址:http://www.cnblogs.com/5ishare/p/4891193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!