iOS设计模式 - 桥接
示意图
说明
1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引用被封装于抽象层的实例中,桥接就形成了.
2. 桥接模式可以解决具有功能类似但又不完全相同的某种功能架构,为了能让实现更加灵活.
源码
https://github.com/YouXianMing/iOS-Design-Patterns
// // 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
分析
桥接模式伦理图
其实,就是抽象的管理类管理一个抽象的执行类,通过一个方法或者多个方法来让抽象执行类完成功能,这就是传说中的桥接模式