`

swift之桥接模式

 
阅读更多
桥接模式:是一种结构型模式,较好地适应两个或者多个维度的变化,假如使用继承则过于臃肿或者是的设计变得臃肿。

<!--?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()
}
不同的电视和开关:
<!--?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(
"开关海尔彩电")
    }
}
将二者行为关联起来,搞个小孩子开关电视
<!--?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)
分享到:
评论

相关推荐

    设计模式swift版本

    7. **桥接模式(Bridge)**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。Swift中,可以利用协议和继承来实现。 8. **装饰模式(Decorator)**:动态地给一个对象添加一些额外的职责。Swift中,可以...

    swift-使用OC实现常用的23种设计模式

    在Swift中,可以利用协议和类型擦除来实现桥接模式。 11. 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。Swift中的静态变量可以用来实现享元模式。 12. 组合模式(Composite):将对象组织成树...

    Swift设计模式详解(直接源码)

    桥接模式将抽象部分与其实现部分分离,使它们可以独立变化。在Swift中,可以使用协议和类型擦除来实现: ```swift protocol DrawAPI { func drawRect(rect: CGRect) } class Shape { var drawAPI: DrawAPI ...

    设计模式经典样例笔记与代码Swift.zip

    [x] 桥接模式 [x] 过滤器模式 [x] 组合模式 [x] 装饰器模式 [x] 外观模式 [x] 享元模式 [x] 代理模式 行为型 这些设计模式特别关注对象之间的通信。 [x] 责任链模式 [x] 命令模式 [x] 解释器模式 [x] 迭代器模式 [x...

    swift-DesignPatternsinSwift中的所有源代码

    Swift中,通过类型擦除(AnyObject,Any)或者协议可以实现桥接模式。 8. **享元模式**:运用共享技术有效地支持大量细粒度的对象。Swift的结构体天生具有值语义,可以用于实现轻量级对象的共享。 9. **命令模式**...

    Swift 5.0中实现的设计模式.zip

    Swift中的`NSAdapterManager`就是一个适配器,用于桥接Objective-C和Swift对象。 以上只是Swift 5.0中实现的一些设计模式,实际上还有很多其他模式,如策略模式、建造者模式、代理模式等,它们都有助于提高代码的...

    设计原则(责任链,桥接,适配器,单例,命令)

    在给定的标题和描述中,提到了五个关键的设计原则:责任链模式、桥接模式、适配器模式、单例模式以及命令模式。这些模式都是面向对象设计中的经典模式,对iOS开发尤其重要,因为它们可以帮助我们更好地组织代码,...

    swift最新源码

    Swift源码主要分布在几个核心库中,其中`swift-corelibs-foundation`是Swift的核心基础库之一,它是Swift对Foundation框架的实现。Foundation是Apple平台上的一个关键框架,提供了许多基本的数据类型、集合类、文件...

    swift-When-Swift中的Promises的轻量级实现

    在Swift编程语言中,异步编程是处理耗时操作如网络请求、文件...通过研究Vadym Markov的这个项目源码(vadymmarkov-When-621dcdb),开发者可以深入理解Promise模式在Swift中的应用以及如何实现一个轻量级的Promise库。

    Oc调用 swift

    在Swift中调用Objective-C代码通常非常直观,因为Swift提供了一种桥接机制。首先,确保你的Objective-C代码包含在`.h`头文件中,这样Swift可以访问。然后,在你的Swift文件顶部,使用`@import`指令导入相关的...

    swift-Every.SwiftNSTimer的一个便利封装

    然而,Swift的标准库并没有提供对它的直接桥接,因此在Swift中使用`NSTimer`时通常需要通过`NSRunLoop`或者`RunLoop`进行操作,这在代码中可能会显得较为繁琐。`Every.Swift`就是为了解决这个问题而创建的一个库,它...

    swift-Jay-纯Swift的JSON解析器和格式化程序

    `Jay`的核心优势在于其完全由Swift编写,这意味着它能够充分利用Swift语言的特性,如类型安全和模式匹配,从而提供更直观和高效的API。与`NSJSONSerialization`相比,`Jay`可能提供更快的解析速度,同时避免了...

    Pro Design Patterns in Swift copy

    - **桥接模式**:将抽象部分与它的实现部分分离,使它们可以独立变化。 - **装饰器模式**:动态地给一个对象添加新的职责,提供一种替代继承机制的方法。 - **组合模式**:将对象组合成树形结构以表示“部分-整体...

    swift-用objc库实现KVOKVC

    总之,虽然Swift本身不直接支持KVO和KVC,但通过桥接Objective-C库,我们可以有效地在Swift项目中利用这些强大的机制。了解和熟练掌握这些技术,将有助于提升你的Swift编程能力,特别是在处理数据绑定和响应式编程...

    swift-Swift中简单快速的模糊字符串匹配

    Swift的标准库提供了`NSRegularExpression`类,它是Objective-C中的`NSRegularExpression`的桥接,可以用来编译和执行正则表达式。通过使用通配符或者模式匹配,我们可以构建模糊匹配的规则。例如,星号(*)可以...

    swift-一个用Swift编写的Objective-C模拟器

    7. **桥接与互操作性**:Swift和Objective-C可以无缝互操作,这个模拟器可能会展示如何在Swift环境中模拟这种桥接。 通过这个项目,开发者不仅能深入了解Swift和Objective-C的内部工作原理,还能锻炼到跨语言编程和...

    swift-ReactNative学习笔记

    1. **语法特性**: Swift拥有简洁的语法,支持类型推断、可选类型和模式匹配,这使得代码更加安全且易于阅读。例如,可选类型(Optional)用于处理可能的null值,避免了常见的空指针异常。 2. **协议与扩展**: Swift...

    React-native 桥接原生控件

    调试桥接代码通常需要结合原生开发者工具和React-Native的开发者模式。确保在原生和JavaScript两端都有良好的日志记录和错误处理机制。 总的来说,React-Native的桥接机制是其强大功能的关键所在,它使得开发者...

Global site tag (gtag.js) - Google Analytics