iOS设计模式 - 桥接
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
分析
桥接模式伦理图
其实,就是抽象的管理类管理一个抽象的执行类,通过一个方法或者多个方法来让抽象执行类完成功能,这就是传说中的桥接模式
iOS设计模式 - 桥接的更多相关文章
- iOS书摘之Objective-C编程之道 iOS设计模式解析
来自<Objective-C编程之道iOS设计模式解析>一书的摘要总结 一.Prototype 原型模式 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象.(<设 ...
- iOS设计模式 - (1)概述
近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设 ...
- IOS设计模式之一(MVC模式,单例模式)
iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...
- 转:设计模式-----桥接模式(Bridge Pattern)
转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- iOS设计模式之生成器
iOS设计模式之生成器 1.生成器模式的定义 (1): 将一个复杂的对象的构件与它的表示分离,使得相同的构建过程能够创建不同的表示 (2): 生成器模式除了客户之外还包括一个Director(指导者) ...
- IOS设计模式之三:MVC模式
IOS设计模式之三:MVC模式 模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...
- 跟着ZHONGHuan学习设计模式--桥接模式
转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...
- linkin大话设计模式--桥接模式
linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...
随机推荐
- ubuntu 配置 samba服务器
samba配置的安装: sudo apt-get install samba smbfs smbclient 二. 创建共享目录: mkdir /home/komy/sharesudu chmod 7 ...
- Ubuntu 下 unzip用法
unzip [参数] <压缩文件> 参数: -P <密码> zip 压缩包的密码-f 覆盖原有文件-d <路径> 指定解压路径-n 解压缩时不覆盖原有文件-o 不经 ...
- 运行零币Zcash(ZEC)
1.在基于 Ubuntu 或者 Debian 的系统中: $ sudo apt-get install \build-essential pkg-config libc6-dev m4 g++-mul ...
- javac的Resolve类解读
方法1:isInitializer() /** An environment is an "initializer" if it is a constructor or * an ...
- grub2配置关键(三个核心变量prefix、root、cmdpath)和几点疑问
前置知识:你必须知道grub的启动过程以及bios和uefi的相关基础知识,可以参考:<Unified Extensible Firmware Interface Wikipedia>.& ...
- 10w定时任务,如何高效触发超时
一.缘起 很多时候,业务有定时任务或者定时超时的需求,当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描. 例如:58到家APP实时消息通道系统,对每个用户会维护一个APP到服务器的TC ...
- maven 错误:读取 xxx.jar 时出错;invalid LOC header (bad signature) 1 错误
reqHeader:{Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, Upgrade-Insecure- ...
- Cannot find type definition file for '.svn'
描述: Ionic项目在执行ionic build --prod过程中,出现如下错误: 看来是.svn文件影响了编译. 解决办法:升级TortoiseSVN版本(https://tortoisesvn ...
- 使用原生JavaScript实现对select增加option标签并附加value属性
好久没有写原生的东西了,今天写了一个小项目里面包含着option选项,所以我决定使用原生JavaScript动态生成, 本着互联网分享精神,我将本篇文章分享给大家. html代码(就是一个select ...
- AJAX 教程
AJAX AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJA ...