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
分析
桥接模式伦理图
其实,就是抽象的管理类管理一个抽象的执行类,通过一个方法或者多个方法来让抽象执行类完成功能,这就是传说中的桥接模式