花费半个月的时间完成对《Objective-C编程之道:iOS设计模式解析》的阅读,读来时而欢喜,时而疑惑,通过书本,我们能看到很多熟悉的方式、模式,但是也感慨于使用之精巧,设计之奇妙。不单是想立即在自己的项目中实践,也想记录&分享,不当是自己总结,也是更大家一起进行交流。
关于设计模式的概念、来源就不多说,首先看下整本书总结的设计方法,后面会针对具体的方式进行举例说明。
设计模式类型 | 名称 | 描述 | 传送门 |
对象创建 | 原型 | 原型模式使子类可以在客户端任意时刻进行复制,常见例如iOS的copy操作。 | 点击跳转文章 |
工厂方法 | 定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到子类。--《设计模式》 | 点击跳转文章 | |
抽象工厂 | 提供一系列创建相关或相互依赖的接口,而无需指定他们具体的类。--《设计模式》,例如可以获取波音飞机工厂,生产一系列的发动机、机翼、刹车片等。 | 待添加 | |
生成器 | 将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。--《设计模式》,可以参考PB的iOS实现。 | 待添加 | |
单例 | 保证一个类仅有一个实例,并提供一个访问它的全局访问点。--《设计模式》 | 待添加 | |
待添加 | |||
接口适配 | 适配器 | 正如其名,将一个类的接口转换成客户端希望的另外一个接口,进行适配。 | 待添加 |
桥接 | 将抽象与实现分离,使它们都可以独立地变化。--《设计模式》 | 待添加 | |
外观 | 组合一系列的操作,例如将开车具体行为组合成一个drivertolocation的接口 | 待添加 | |
待添加 | |||
对象去耦 | 中介者 | 用一个对象来封装一系列的交互方式,从而让逻辑汇总到一个点。而其他对象不需要相互知晓。 | 待添加 |
观察者 | iOS中的消息通知和KVO。 | 待添加 | |
待添加 | |||
抽象集合 | 组合 | 组合就是组合成树形结构以表示“部分-整体”的层次结构。使得可以相互包含然后又行为一致。例如点、线、向量的关系。 | 待添加 |
迭代器 | 常见Array、Dictionary的枚举。 | 待添加 | |
待添加 | |||
行为扩展 | 访问者 | 作用于某对象的各元素的操作,可以将操作跟元素分离,在不改变元素的前提下进行新的操作。 | 待添加 |
装饰 | 动态的为一个对象添加额外的职责,例如:滤镜。 | 待添加 | |
责任链 | iOS的消息传递模式。 | 待添加 | |
待添加 | |||
算法封装 | 模板方法 | 为子系统实例化流程,具体每个步骤操作延迟到子类实现。 | 待添加 |
策略 | 子类化针对同对象的不同操作,然后利用IB等关联对应的处理。 | 待添加 | |
命令 | 参考NSInvocation、NSUndoManager等。 | 待添加 | |
待添加 | |||
性能与对象访问 | 享元 | 线程池、图片池、各种池等。 | 待添加 |
代理 | 提供中间proxy操作,用来进行容错和中间步骤处理。 | 待添加 | |
待添加 | |||
对象状态 | 备忘录 | 分离元素跟具体数据组合等的操作,封装封闭而元素对外公开。 | 待添加 |
后面我们会逐步用swift讲解相关设计模式。