桥接模式:是一种结构型模式,较好地适应两个或者多个维度的变化,假如使用继承则过于臃肿或者是的设计变得臃肿。
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
桥接模式将变化抽象分出来,使得变化的部分与主类分离开来,进而将多个维度的变化分离开来。然后通过一个管理类来将这些多个维度的事物进行柔和,进而满足业务需求 。
我们举一个电视机开关的应用,电视有很多牌子,开关大不相同,但是功能都是相同:开关电视,很符合桥接模式的场景。
定义两个个protocol:开关和应用
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> protocol Switch{
func onOrOff()
}
protocol Application{
func turnOnOrOff()
}
func onOrOff()
}
protocol Application{
func turnOnOrOff()
}
不同的电视和开关:
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> class TVSwitch: Switch {
internal var application:Application?
required init(app:Application){
self.application = app
}
func onOrOff() {
assert(self.application != nil, "怒能为空")
self.application!.turnOnOrOff()
}
}
class ChangHongTV:Application {
func turnOnOrOff() {
println("开关长虹电视")
}
}
class HaierTV: Application {
func turnOnOrOff() {
println("开关海尔彩电")
}
}
internal var application:Application?
required init(app:Application){
self.application = app
}
func onOrOff() {
assert(self.application != nil, "怒能为空")
self.application!.turnOnOrOff()
}
}
class ChangHongTV:Application {
func turnOnOrOff() {
println("开关长虹电视")
}
}
class HaierTV: Application {
func turnOnOrOff() {
println("开关海尔彩电")
}
}
将二者行为关联起来,搞个小孩子开关电视
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> class ABoy {
var sw = TVSwitch(app: nil)
func operaTV(tv:Application){
if let tvSwitch = sw.application{
}else{
sw.application = tv
}
println("小朋友开关")
sw.onOrOff()
}
}
var haier = HaierTV()
var boy = ABoy()
boy.operaTV(haier)
var sw = TVSwitch(app: nil)
func operaTV(tv:Application){
if let tvSwitch = sw.application{
}else{
sw.application = tv
}
println("小朋友开关")
sw.onOrOff()
}
}
var haier = HaierTV()
var boy = ABoy()
boy.operaTV(haier)
相关推荐
SwiftPython - 将Swift桥接到Python的实验
Swift桥接文件
“Swift is still very, very young and many developers are still figuring out how to best use the language. There are countless tutorials about patterns and best practices, which makes it hard to see ...
用swift写一个观察者模式,集合了swift语言中类,数组,协议,方法,字符串,条件控制语句等一些语法。简单介绍下观察者模式,在观察者模式中,会改变的是主题的状态以及观察者的数目。用这个模式,可以改变依赖于...
swift5 Demo,Xcode11创建项目,支持iOS13深浅模式图片以及颜色动态变化。 项目为标准的UITabBarController布局,里面含有Alamofire5最新版本的网络请求,目前暂无官方文档。项目下载修改一下工程名就可以作为新项目...
[x] 桥接模式 [x] 过滤器模式 [x] 组合模式 [x] 装饰器模式 [x] 外观模式 [x] 享元模式 [x] 代理模式 行为型 这些设计模式特别关注对象之间的通信。 [x] 责任链模式 [x] 命令模式 [x] 解释器模式 [x] 迭代器模式 [x...
The Swift programming language has transformed the world of iOS development and started a new age of modern development. Pro Design Patterns in Swift shows you how to harness the power and flexibility...
IOS开发之swift设计模式, 源码来自国外大神, 讲解得非常详细,包含日常开发常用的设计模式code及讲解
SwiftJava:桥接Swift至JavaVM
Swift 版夜晚模式切换库。以优雅的方式来整合夜间模式至swift项目
主要给大家介绍了关于Swift中单例模式替换的相关资料,然后又跟大家分享了关于Swift3.0 单例模式实现的几种方法-Dispatch_Once的内容,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
iOS 开发中有时候会有夜间模式(换肤设置)的需求, 其实主要是更改相关颜色操作!
Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift...
为 Swift 项目快速集成夜间模式(iOS).zip,将夜间模式与SWIFT项目整合的优雅方式
您是一个高级程序员,可以从中全面了解到设计模式以及 Swift的边角技术的使用;您是一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决办法,呀,是不是把牛吹大了?! 我的博客:...
Swift行走江湖指南-设计模式.pdf
RxCombine在RxSwift和Apple的Combine框架之间提供双向类型桥接
Each - Swift应用的Elegant接口,是一个采用Swift编写的NSTimer桥接库
包括23种swift设计模式源码,质量较高,赚点积分,要者自取