程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Objective C設計模式之外觀模式facade

Objective C設計模式之外觀模式facade

編輯:關於C

一個框架中如果包含的類比較多,或者功能比較復雜的情況下,可以通過一個較輔助類為一些常用的情況提供簡單的接口。這樣客戶在使用這個框架的時候既可以比較簡單的應付常見的場景,又可以使用框架中的內實現符合自己要求的功能。這就好比買電腦的時候,即可以買品牌機,又可以自己買配件組裝。下面就拿買電腦來舉例。

假設電腦由顯示器、主板、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處理器

類圖:  

我們可以利用這幾個選取的類去組裝任意配置的電腦。但是如果遇到小白用戶,他們可能從來沒有聽說過什麼是處理器,什麼是主板。這時我們可能希望有一個簡單一點地方式去做這件事。

@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這個類的好處就是客戶可以不去了解電腦的組成的情況下,也可以得到一台完整的電腦。這樣就可以同時滿足小白用戶和專業用戶了。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved