你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS設計模式--橋接

iOS設計模式--橋接

編輯:IOS開發綜合

學習設計模式推薦看OBJECTIVE - C設計模式。

何時使用橋接模式

1、不想在抽象與其實現之間形成固定的綁定關系(這樣就在運行時切換實現)

2、抽象及其實現都應可以通過子類化獨立進行擴展;

3、對抽象的實現進行修改不應影響客戶端代碼

4、如果每個實現需要額外的子類以細化抽象,則說明有必要把它們分成兩個部分

5、想在帶有不同抽象接口的多個對象之間共享一個實現

 

下面用代碼說說這個設計模式

先展示下調用的代碼

 

//
//  ViewController.m
//  BridgeTest
//
//  Created by qitmac000246 on 15/7/13.
//  Copyright (c) 2015年 杜甲. All rights reserved.
//

#import ViewController.h
#import TouchConsoleController.h
#import GameBoyEmulator.h


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // 子功能實現
    GameBoyEmulator *gbe = [[GameBoyEmulator alloc] init];
    // 功能模塊調用
    TouchConsoleController *tcc = [[TouchConsoleController alloc] init];
    [tcc setEmulator:gbe];// 指定功能對象
    [tcc setCommand:kConsoleUp];// 實現
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ConsoleEmulator.h

 

 

//
//  ConsoleEmulator.h
//  BridgeTest
//
//  Created by qitmac000246 on 15/7/14.
//  Copyright (c) 2015年 杜甲. All rights reserved.
//

#import 

typedef enum
{
    kConsoleUp,
}ConsoleType;

// 執行類的抽象父類
@interface ConsoleEmulator : NSObject

// 抽象的公用方法
- (void) loadInstructionsForCommand;


@end

ConsoleEmulator.m

 

 

#import ConsoleEmulator.h

@implementation ConsoleEmulator

- (void) loadInstructionsForCommand
{
    
    
}
@end
GameBoyEmulator.h

 

 

#import ConsoleEmulator.h


@interface GameBoyEmulator : ConsoleEmulator



@end

GameBoyEmulator.m

 

 

#import GameBoyEmulator.h

@implementation GameBoyEmulator

// 子執行類
- (void) loadInstructionsForCommand
{
    NSLog(@%s,__func__);
}
@end

ConsoleController.h

 

 

#import 
#import ConsoleEmulator.h

@interface ConsoleController : NSObject

// 控制器的父類中定義 執行類的抽象父類
@property (nonatomic , strong) ConsoleEmulator *emulator;

// 抽象的公用調用方法
- (void) setCommand:(ConsoleType)command;


@end

ConsoleController.m

 

 

#import ConsoleController.h

@implementation ConsoleController

- (void) setCommand:(ConsoleType)command
{
    [_emulator loadInstructionsForCommand];
}
@end

TouchConsoleController.h

 

 

#import ConsoleController.h
// 控制器子類
@interface TouchConsoleController : ConsoleController

- (void) up;

@end

TouchConsoleController.m

 

 

#import TouchConsoleController.h

@implementation TouchConsoleController

- (void) up
{
    [super setCommand:kConsoleUp];
}
@end


 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved