溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-15 07:18:58 來源:網絡 閱讀:255 作者:wcrane 欄目:開發技術

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

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女