博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS设计模式 - 桥接
阅读量:5123 次
发布时间:2019-06-13

本文共 1979 字,大约阅读时间需要 6 分钟。

iOS设计模式 - 桥接

 

示意图

 

说明

1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引用被封装于抽象层的实例中,桥接就形成了.

2. 桥接模式可以解决具有功能类似但又不完全相同的某种功能架构,为了能让实现更加灵活.

 

源码

////  ConsoleController.h//  GameBoy////  Created by YouXianMing on 15/7/26.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
#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 
#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 
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

 

分析

桥接模式伦理图

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

 

转载于:https://www.cnblogs.com/YouXianMing/p/4681186.html

你可能感兴趣的文章
Python学习笔记(一)
查看>>
codeforces Educational Codeforces Round 24 (A~F)
查看>>
LeetCode -- Merge K Sorted Lists
查看>>
C程序设计 贪吃蛇分析(2)
查看>>
IGMP简介
查看>>
1418:猴子选大王
查看>>
C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上)
查看>>
DataTable 转换成 Json的3种方法
查看>>
eclipse怎样在线安装hibernate tools插件并使用
查看>>
判断IE和360浏览器
查看>>
Vuejs 用$emit 与 $on 来进行兄弟组件之间的数据传输
查看>>
Kernel Knights (Gym - 101480K)
查看>>
MIPS 跳转指令BAL vs JAL
查看>>
最短路问题
查看>>
博客转移
查看>>
Shell入门教程:命令替换 $() 和 ``
查看>>
解决ThinkPHP3.2.3框架,PDO驱动类“抛出异常”不起作用的bug
查看>>
结对作业
查看>>
洛谷P2341 受欢迎的牛——Tarjan+缩点模板
查看>>
一些资源地址
查看>>