ObjectiveC设计模式之外观模式facade-创新互联

一个框架中如果包含的类比较多,或者功能比较复杂的情况下,可以通过一个较辅助类为一些常用的情况提供简单的接口。这样客户在使用这个框架的时候既可以比较简单的应付常见的场景,又可以使用框架中的内实现符合自己要求的功能。这就好比买电脑的时候,即可以买品牌机,又可以自己买配件组装。下面就拿买电脑来举例。

成都创新互联公司专注于龙潭企业网站建设,自适应网站建设,成都做商城网站。龙潭网站建设公司,为龙潭等地区提供建站服务。全流程定制网站建设,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

假设电脑由显示器、主板、CPU、内存和显卡组成。当然,实际远远不止这些。每个设备都有许多的参数需要选择,我们给它们分别定义一个类去完成选择的工作。

//选择显示器@interface Display : NSObject- (void)chooseDisplay:(NSString *)type;@end@implementation Display- (void)chooseDisplay:(NSString *)type {
    NSLog(@"选择显示器:%@", type);}@end//选择主板@interface MainBoard : NSObject- (void)chooseMainBoard:(NSString *)type;@end@implementation MainBoard- (void)chooseMainBoard:(NSString *)type {
    NSLog(@"选择主板:%@", type);}@end//选择CPU@interface CPU : NSObject- (void)chooseCPU:(NSString *)type;@end@implementation CPU- (void)chooseCPU:(NSString *)type {
    NSLog(@"选择CPU:%@", type);}@end//客户代码@interface Client : NSObject- (void)assebleComputer;@end@implementation Client - (void)assebleComputer {
    Display *display = [Display new];
    [display chooseDisplay: @"AOC"];

    MainBoard *mainBoard = [MainBoard new];
    [mainBoard chooseMainBoard: @"华硕"];

    CPU *cpu = [CPU new];
    [cpu chooseCPU: @"i7处理器"]}@end

这时的输出结果应该是:

选择显示器:AOC
选择主板:华硕
选择CPU:i7处理器

类图: Objective C设计模式之外观模式facade

我们可以利用这几个选取的类去组装任意配置的电脑。但是如果遇到小白用户,他们可能从来没有听说过什么是处理器,什么是主板。这时我们可能希望有一个简单一点地方式去做这件事。

@interface MacBookPro : NSObject- (void)chooseDevice;@end@implementation MacBookPro- (void)chooseDevice {
    Display *display = [Display new];
    [display chooseDisplay: @"三星"];

    MainBoard *mainBoard = [MainBoard new];
    [mainBoard chooseMainBoard: @"华硕"];

    CPU *cpu = [CPU new];
    [cpu chooseCPU: @"i5处理器"]}@end

这时客户的代码为:

@interface Client : NSObject- (void)assebleComputer;@end@implementation Client- (void)assembleComputer {
    MacBookPro *computer = [MacBookPro new];
    [computer chooseDevice];}@end

输出结果为:

选择显示器:三星
选择主板:华硕
选择CPU:i5处理器

使用MacBookPro这个类的好处就是客户可以不去了解电脑的组成的情况下,也可以得到一台完整的电脑。这样就可以同时满足小白用户和专业用户了。下面是它们之间的类图。 Objective C设计模式之外观模式facade

本文档由长沙戴维营教育整理。

http://io.diveinedu.com

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


文章标题:ObjectiveC设计模式之外观模式facade-创新互联
分享地址:http://myzitong.com/article/dhioed.html