标签:
在做一些大型的应用时可能会采用分布式通过系统集成来进行数据的流动,例如ERP系统,它就会分人力资源系统,进销存系统,财务系统等,而在这些系统中可能会又有几个子系统,在这系统之间难免会有数据的流动,但每个系统内部也比较复杂。比如几个分公司分布部署有一套ERP系统,总部可能要在月底做一月结,如果直接调用这些子系统那样会非常的麻烦, 那要怎么解决呢?外观模式就是一个不错的选择。
一、定义:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
二、结构图
三、适用场景及优缺点
四、实现
#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