4设计模式 swift_swift 听筒模式 - CSDN
  • Swift 设计模式

    2020-07-30 23:31:54
    IOS开发之swift设计模式, 源码来自国外大神, 讲解得非常详细,包含日常开发常用的设计模式code及讲解
  • Swift设计模式 原文 Design-Patterns-In-Swift // 桥梁模式 // 百度百科:继承或实现的类通过不同的实现方式来完成抽象类或接口的变化 , 也就是实现过程的变化 , 但可能会有这样的情况 , 抽象过程同样需要进行变化 ,...
    
    
    

    转自

    原文

    // 桥梁模式
    // 百度百科:继承或实现的类通过不同的实现方式来完成抽象类或接口的变化 , 也就是实现过程的变化 , 但可能会有这样的情况 , 抽象过程同样需要进行变化 , 也就是抽象类或者接口需要变化 , 这样就会造成原有的继承或实现关系复杂 , 关系混乱 .桥梁模式利用将抽象层和实现层进行解耦 , 使两者不再像继承或实现这样的较强的关系 , 从而使抽象和实现层更加独立的完成变化的过程 . 使系统更加清晰
    // 设计模式分类:创建型模式
    
    /**
     *  开关接口
     */
    protocol Switch {
        var appliance: Appliance {get set}
        func turnOn()
    }
    
    /**
     *  电器接口
     */
    protocol Appliance {
        func run()
    }
    
    /// 开关实现
    class RemoteControl: Switch {
        var appliance: Appliance
    
        func turnOn() {
            self.appliance.run()
        }
    
        init(appliance: Appliance) {
            self.appliance = appliance
        }
    }
    
    /// 电器实现,电视
    class TV: Appliance {
        func run() {
            print("tv turned on");
        }
    }
    
    /// 电器实现,吸尘器
    class VacuumCleaner: Appliance {
        func run() {
            print("vacuum cleaner turned on")
        }
    }
    
    var tvRemoteControl = RemoteControl(appliance: TV())
    tvRemoteControl.turnOn()
    
    var fancyVacuumCleanerRemoteControl = RemoteControl(appliance: VacuumCleaner())
    fancyVacuumCleanerRemoteControl.turnOn()
    展开全文
  • Swift设计模式整理

    2016-05-13 12:02:35
    定位swift设计模式的入门读物。各个模式详细介绍请自行搜索网文,博客,也可以查看下面的参考文章。使用方法 读懂代码 在网上查找各种对应设计模式的含义 再次回来读代码并联系含义 分类 No. name(cn) name(en) ...
    
    
    

    定位

    swift设计模式的入门读物。各个模式详细介绍请自行搜索网文,博客,也可以查看下面的参考文章。

    使用方法

    1. 读懂代码
    2. 在网上查找各种对应设计模式的含义
    3. 再次回来读代码并联系含义

    分类

    No. name(cn) name(en) type
    1 代理模式 Proxy 结构型
    2 外观模式 Facade
    3 装饰模式 Decorator
    4 组合模式 Composite
    5 桥梁模式 Bridge
    6 适配器模式 Adapter
    7 单例模式 Singleton 创建型
    8 原型模式 Prototype
    9 工厂方法模式 Factory Method
    10 创建者模式 Builder
    11 抽象工厂模式 Abstract Factory
    12 访问者模式 Visitor 行为型
    13 策略模式 Strategy
    14 状态模式 State
    15 观察者模式 Observer
    16 备忘录模式 Memento
    17 中介者模式 Mediator
    18 迭代器模式 Iterator
    19 解释器模式 Interpreter
    20 命令模式 Command
    22 责任链模式 Chain Of Responsibility

    源码

    改动了一部分原文章的代码!

    参考文章

    展开全文
  • Swift设计模式 原文 Design-Patterns-In-Swift // 状态模式 // 百度百科:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 // 设计模式分类:行为型模式/// 持有状态的对象 class Context ...
    
    
    

    转自

    原文

    // 状态模式
    // 百度百科:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类
    // 设计模式分类:行为型模式
    
    /// 持有状态的对象
    class Context {
        private var state: State = UnauthorizedState()
    
        var isAuthorized: Bool {
            get { return state.isAuthorized(self) }
        }
    
        var userId: String? {
            get { return state.userId(self) }
        }
    
        func changeStateToAuthorized(userId userId: String) {
            state = AuthorizedState(userId: userId)
        }
    
        func changeStateToUnauthorized() {
            state = UnauthorizedState()
        }
    
    }
    
    /**
     *  状态接口
     */
    protocol State {
        func isAuthorized(context: Context) -> Bool
        func userId(context: Context) -> String?
    }
    
    /// 未认证状态
    class UnauthorizedState: State {
        func isAuthorized(context: Context) -> Bool { return false }
    
        func userId(context: Context) -> String? { return nil }
    }
    
    /// 认证状态
    class AuthorizedState: State {
        let userId: String
    
        init(userId: String) { self.userId = userId }
    
        func isAuthorized(context: Context) -> Bool { return true }
    
        func userId(context: Context) -> String? { return userId }
    }
    
    let context = Context()
    (context.isAuthorized, context.userId)
    context.changeStateToAuthorized(userId: "admin")
    (context.isAuthorized, context.userId) // now logged in as "admin"
    context.changeStateToUnauthorized()
    (context.isAuthorized, context.userId)
    展开全文
  • swift设计模式学习 - 模板方法模式

    千次阅读 2017-02-24 13:59:34
    设计模式学习的demo地址,欢迎大家学习交流 模板方法模式模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法...

    移动端访问不佳,请访问我的个人博客

    设计模式学习的demo地址,欢迎大家学习交流

    模板方法模式

    模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    模板方法模式的基本实现

    上图是基本模板模式的UML图,这种设计模式在很多地方都有用到,下面是基本实现的代码:

    class AbstractClass {
        func primitiveOperation1() {}
        func primitiveOperation2() {}
    
        func templateMethod() {
            primitiveOperation1()
            primitiveOperation2()
        }
    }
    
    class ConcreteClassA: AbstractClass {
        override func primitiveOperation1() {
            print("具体类A方法1实现")
        }
    
        override func primitiveOperation2() {
            print("具体类A方法2实现")
        }
    }
    
    class ConcreteClassB: AbstractClass {
        override func primitiveOperation1() {
            print("具体类B方法1实现")
        }
    
        override func primitiveOperation2() {
            print("具体类B方法2实现")
        }
    }

    模板方法模式解决实际问题(填表格)

    在生活中很多地方用到的模板方法模式,比如我们填一份表格,我们要按照表格的模板开始填,只需要填关键部分,而不用将表格的所有文字炒一遍,下面是UML和代码:

    // 表格的模板
    class TemplateTable {
        func showTable() {
            fillName()
            fillSex()
        }
    
        func fillName() {
            print("你的名字:\(yourName())")
        }
    
        func fillSex() {
            print("你的性别:\(yourSex())")
        }
    
        func yourName() -> String {
            return ""
        }
    
        func yourSex() -> String {
            return ""
        }
    }
    
    // wcl填写的表格
    class WCLTable: TemplateTable {
        override func yourName() -> String {
            return "wcl"
        }
    
        override func yourSex() -> String {
            return "male"
        }
    }
    
    // scy填写的表格
    class SCYTable: TemplateTable {
        override func yourName() -> String {
            return "scy"
        }
    
        override func yourSex() -> String {
            return "female"
        }
    }

    下面我们调用一下代码:

    let wcl = WCLTable()
    wcl.showTable()
    let scy = SCYTable()
    scy.showTable()

    下面是调用的结果:

    你的名字:wcl
    你的性别:male
    你的名字:scy
    你的性别:female

    模板方法模式的特点

    模板方法模式是通过把不变行为搬移到超类,去除子类中重复代码来体现它的优势,它提供了一个很好的代码复用平台。

    以上是我对模板方法模式的理解,如果有不对的地方欢迎大家交流,最后谢谢大家的阅读~~

    展开全文
  • Swift设计模式之抽象工厂模式

    千次阅读 2016-05-12 11:40:53
    Swift设计模式 原文 Design-Patterns-In-Swift // 抽象工厂模式 // 百度百科:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 // 设计模式分类:创建型模式import Foundation/** * 抽象...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 访问者模式 // 百度百科:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作 // 设计模式分类:行为型...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 适配器模式 // 百度百科:适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 中介者模式 // 来自网络:类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用 // 设计模式分类:...
  • Swift设计模式之工厂方法模式

    千次阅读 2016-05-12 11:38:23
    Swift设计模式 原文 Design-Patterns-In-Swift // 工厂方法模式 // 百度百科:是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、...
  • Swift 路由机制设计

    2017-07-01 08:06:04
    设计模式 APP设计模式多种多样,从最初的MVC到MVVM,再到MVP,VIPER等。越来越多的设计模式被开发出来并得以应用,但不论我们用到哪种设计模式,只需要记住高内聚、低耦合那边是好的设计模式。在这里笔者整理了一份...
  • Swift设计模式之单例(SINGLETON)

    千次阅读 2015-06-16 18:40:29
    Swift是一门新的语言,每一门语言都有其特点,如何在Swift下实现单例设计模式呢?
  • swift设计模式学习 - 代理模式

    千次阅读 2017-02-21 23:58:22
    设计模式学习的demo地址,欢迎大家学习交流 代理模式代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到...
  • swift设计模式学习 - 原型模式

    千次阅读 2017-02-20 19:57:53
    设计模式学习的demo地址,欢迎大家学习交流 原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 单例模式 // 百度百科:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 // ...
  • swift设计模式学习一

    2016-04-26 08:43:54
    好久没写博客了,最新有些时间,刚好在研究设计模式,准备记录下学习历程吧。昨天看的工厂模式,但理解的不够,后面再写吧,免得误导各位。 今天看的模版方法,如果有写的不对的地方 希望大家指出。下面写一段通用的...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 外观模式 // 百度百科:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用 // 设计模式分类:结构型模式import ...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 策略模式 // 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化 // 设计模式分类:...
  • Swift设计模式 原文 Design-Patterns-In-Swift // 原型模式 // 百度百科:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 // 设计模式分类:创建型模式class ChungasRevengeDisplay { var name: ...
  • swift设计模式学习 - 装饰模式

    千次阅读 2017-02-18 22:59:46
    移动端访问不佳,请访问我的个人博客装饰模式在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点 装饰对象和真实对象有相同...
1 2 3 4 5 ... 20
收藏数 14,331
精华内容 5,732
关键字:

4设计模式 swift