首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
设计模式 - Swift 实现
Lebron
创建于2022-11-19
订阅专栏
《Design Patterns by Tutorials》的学习笔记。
等 1 人订阅
共21篇文章
创建于2022-11-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【设计模式】01 - 什么是设计模式
设计模式不是具体的实现,而是一套可以重复利用的模板解决方案,用于解决开发中常见的问题。它可以让我们在写代码的之前思考如何去写代码。 不管是什么语言还是什么平台,设计模式是非常有用的。我们每一个开发者都应该了解它们,知道何时使用它们,如何使用它们。 假设我家要建一套房子,需要把砖…
【设计模式】02 - MVC模式 (Model-View-Controller Pattern)
MVC (model-view-controller) 把所有类分成三种类型:模型、视图和控制器。 MVC在iOS开发中是非常常见的,因为这是Apple重度使用的一种设计模式。 Model:保存应用数据,通常是Struct和Class类型。在Swift中,我们优先选择Struc…
【设计模式】03 - 代理模式 (Delegation Pattern)
代理模式可以让一个对象用另外一个对象来提供一些数据或者执行某些任务。这种模式有三部分: 需要代理的对象:也就是有一个delegate属性的对象,通常使用weak修饰,以避免引用循环(需要代理的对象引用着代理,而代理又引用着需要代理的对象)。 代理协议:定义了代理需要实现的方法。…
【设计模式】04 - 策略模式 (Strategy Pattern)
策略模式定义了多个在运行中可以切换的对象。这个模式由三部分组成: 使用策略的对象:在iOS开发中,通常是一个view controller,但是在理论上来说,可以是任何类型的对象。 策略协议:定义了每一种策略需要实现的方法。 所有策略:所有遵循策略协议的策略。 当我们有多个不同…
【设计模式】05 - 单例模式 (Singleton Pattern)
单例模式限制一个类只能有一个实例,每一个对这个类的引用,都指向同一个实例。 当一个类有多个实例会出现问题的时候,我们使用单例模式。 通常以shared、default、standard命名的,都是用单例。 在上面这个例子中,我们把MySingleton的初始化函数定义成了pri…
【设计模式】06 - 备忘录模式 (Memento Pattern)
CareTaker:发起保存Originator的请求,然后收到一个Memento。CareTaker的作用对备忘录进行管理,负责保存备忘录,然后提供已保存的备忘录给Originator,用于恢复Originator的状态。 在iOS中,我们使用Encoder把originat…
【设计模式】07 - 观察者模式 (Observer Pattern)
观察者模式可以让一个对象观察另一个对象的变化。在iOS中,我们一般使用KVO来实现。 subject:被观察的对象。 observer:观察subject的对象。 当我们想关注一个对象的变化时,可以使用观察者模式。 从Swift 4开始,继承自NSObject的类不会自动把他们…
【设计模式】08 - 建造者模式 (Builder Pattern)
建造者模式允许我们一步一步的创建复杂的对象,而不是通过初始化函数一次性创建。这种模式有三个主要的部分组成: 当想要一步一步的创建一个复杂对象时,使用建造者模式。 我们来看一个经典的例子:实现汉堡包的制作。Product是Hamburger;Director是员工Employee…
【设计模式】09 - MVVM模式 (Model-View-ViewModel Pattern)
Model:保存应用的数据,通常是struct或者class。 View:显示应用界面,通常继承自UIView。 View Model:把Model的数据转化成可以显示在View上的数据,通常是class类型。 当我们需要把Model的数据转化成可以显示在View的时候使用。例…
【设计模式】10 - 工厂模式 (Factory Pattern)
工厂模式可以在不需要暴露创建逻辑的情况下,创建对象。主要有两部分组成: Factory:负责创建对象。 Products:Factory创建的对象。 当想要把Product的创建逻辑独立出来,而不是让使用者直接去创建时,使用这种模式。 因为发邮件的时候,需要一个发件人,所以创建…
【设计模式】11 - 适配器模式 (Adapter Pattern)
看到现在,可能比较难懂。我们举个例子:最新的iPhone都把3.5mm的耳机接口给干掉了,如果只有3.5mm接口的耳机,我们又想用耳机听歌,那么必须要有一个3.5mm转lightning的转换器才能使用3.5mm接口的耳机。在这个例子中,转接头就是适配器;3.5mm接口的耳机就…
【设计模式】12 - 迭代器模式 (Iterator Pattern)
迭代器模式提供了一种遍历集合的方式。这个模式设计两种类型:1) 迭代器协议;2) 自定义的可遍历的类型。 Swift里面的集合可以通过for-in来遍历的类型,就是利用了迭代器协议IteratorProtocol。 当我们的class或者struct拥有一组排好序的对象,并且我…
【设计模式】13 - 原型模式 (Prototype Pattern)
原型模式属于创建型模式,允许我们对一个对象进行复制。它包含两个部分:1) Copying协议;2) 遵循Copying协议的Class类型。 浅复制:创建了一个新的实例,但是不复制原实例的属性,而是所有属性都指向原实例。 深复制:创建新的实例,并且复制原有实例的属性。 当想要复…
【设计模式】14 - 状态模式 (State Pattern)
状态模式属于行为模式,可以让一个对象在运行中改变他自己的行为,而行为的改变时通过改变状态来实现的。State指定是描述一个对象如何表现的数据,跟Status的意思是不同的;Status可以理解为你正在做一件事,这件事要多个步骤才能完成,你可以用Status来描述现在进行到哪个步…
【设计模式】15 - 多播委托模式 (Multicast Delegate Pattern)
多播委托模式属于行为模式,属于代理模式的变种。我们可以通过这种模式来创建一对多的代理模式。 多播委托模式和代理模式的主要区别在于:多播委托模式多了一个多播委托对象。 使用这个模式来创建一对多的代理模式。 在这个demo中,我们实现这个例子:特朗普大厦发生火灾,大厦的安保中心及时…
【设计模式】16 - 门面模式 (Facade Pattern)
门面模式属于结构模式,它给一个复杂的系统提供了简单的接口。它涉及到两个部分: Facade:提供了与系统交互的简单方法,它让使用者直接使用facade,而不需要知道系统里的类,也不需要跟他们交互。 Dependencies:Facade持有的对象,每个dependency处理一…
【设计模式】17 - 享元模式 (Flyweight Pattern)
享元模式属于创建型模式,通过复用内存中的对象,减少内存的占用。 这个模式涉及两个部分:1)flyweight对象;2)创建 flyweight 的方法。 其实,享元模式很像单例模式,他们都有让整个程序共享某个对象的特性。但是,在享元模式中,可以拥有多个同一类型的对象。例如,我们…
【设计模式】18 - 中介者模式 (Mediator Pattern)
中介者模式属于行为模式,封装了对象之间的交互,使得对象之间不需要直接沟通,减少对象之间的耦合性。 每个 Colleague 通过Mediator Protocol引用着同一个 Mediator,Colleague 之间的交互都是通过 Medaitor 间接进行交互。 当我们想把…
【设计模式】19 - 组合模式 (Composite Pattern)
组合模式属于结构型模式,可以把多个对象整理成一个树状结构,把这些对象当做一个对象来处理。涉及以下三种类型: 所有的 Leaf 和 Composite 都遵循 Component 协议,所以我们可以在 Composite 中存储不同类型的 Leaf 对象。例如,数组是一个 Com…
【设计模式】20 - 命令模式 (Command Pattern)
命令模式属于行为模式,他把命令的相关信息封装到一个命令对象里。这个模式设计三个类型: Invoker:存储并执行命令。 Command:封装命令的具体行为。 Receiver:接收命令的对象。 当我们要创建可以让不同的Receivers接收的行为时,使用命令模式。 现在的小区房…
下一页