iOS设计模式 - 桥接

示意图

说明
1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引用被封装于抽象层的实例中,桥接就形成了.
2. 桥接模式可以解决具有功能类似但又不完全相同的某种功能架构,为了能让实现更加灵活.
// // ConsoleController.h // GameBoy // // Created by YouXianMing on 15/7/26. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> #import "ConsoleEmulator.h" @interface ConsoleController : NSObject /** * 抽象模拟器 */ @property (nonatomic, strong) ConsoleEmulator *emulator; /** * 执行指令 * * @param command 指令 */ - (void)excuteCommand:(ConsoleCommand)command; @end
// // ConsoleController.h // GameBoy // // Created by YouXianMing on 15/7/26. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> #import "ConsoleEmulator.h" @interface ConsoleController : NSObject /** * 抽象模拟器 */ @property (nonatomic, strong) ConsoleEmulator *emulator; /** * 执行指令 * * @param command 指令 */ - (void)excuteCommand:(ConsoleCommand)command; @end
//
// ConsoleEmulator.h
// GameBoy
//
// Created by YouXianMing on 15/7/26.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef enum : NSUInteger {
kConsoleCommandUp,
kConsoleCommandDown,
kConsoleCommandLeft,
kConsoleCommandRight,
kConsoleCommandSelect,
kConsoleCommandStart,
kConsoleCommandAction1,
kConsoleCommandAction2,
} ConsoleCommand;
@interface ConsoleEmulator : NSObject
/**
* 加载指令
*
* @param command 指令
*/
- (void)loadInstructionsForCommand:(ConsoleCommand)command;
/**
* 执行指令
*/
- (void)excuteInstructions;
@end
//
// ConsoleEmulator.m
// GameBoy
//
// Created by YouXianMing on 15/7/26.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//
#import "ConsoleEmulator.h"
@implementation ConsoleEmulator
- (void)loadInstructionsForCommand:(ConsoleCommand)command {
// 由子类重载实现
}
- (void)excuteInstructions {
// 由子类重载实现
}
@end
分析
桥接模式伦理图

其实,就是抽象的管理类管理一个抽象的执行类,通过一个方法或者多个方法来让抽象执行类完成功能,这就是传说中的桥接模式

