时光不语,静待花开。
写了这一系列文章之后,总结回顾一下自己的感受。
本系列每篇文章都是首先先写出了设计模式的意图,但真正明白意图所要表达的意思却是要在看完代码之后。
Talk is cheap, show me the code.
—— Linus Torvalds 李那厮·脱袜子
回顾
-
每篇文章也尽力画出UML图,UML图看懂和画出来都很简单,难的是背后的
需求分析、需求设计、概要设计等等,这些跟iOS开发没啥关系,但是懂得这些之后更能写出易扩展(根据需求,未来需求)、易维护(根据需求设计查看问题所在)的代码,从整体把握整个项目的功能需求等等 -
结合UML,分析各个角色及其职责,给出代码示例。
-
有了代码示例这些之后,就在想适合的应用场景,大概说了一下用在什么地方。回顾意图明白了能解决什么问题,适用什么场景。
-
面向对象是设计原则、设计模式的基础,从设计原则的角度简单分析其优缺点。 -
最后简单介绍有相似之处设计模式的差异等。
总结
- 创建型:单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式
对象的创建问题,封装复杂的创建过程,解耦对象的创建和使用。
单例:全局唯一对象
简单工厂:由给定的参数来决定创建哪种类型的对象,解耦对象的创建和使用
工厂:创建不同但相关类型的对象
抽象工厂:创造一系列对象
建造:创建复杂对象
原型:创建成本大,对已有对象复制方式进行创建,节省创建时间。
- 结构型:代理模式、装饰器模式、适配器模式、外观模式、组合模式、享元模式、桥接模式
主要总结了一些类和对象组合在一起的经典结构
桥接:将抽象和实现解耦,让它们能独立发展
适配器:类适配器用继承,对象适配器用组合,事后的补救策略,补救设计上的缺陷
代理:访问控制,而非加强功能
装饰器:解决继承过于复杂的问题,组合替代继承,给原始类添加增强功能
外观:定义一组接口,更易用
享元:复用对象,节省内存
- 行为型:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式
类和对象之间的交互
观察者模式:观察者和被观察者解耦
职责链:请求的发送和接收解耦,有对象处理就停止(变种:所有对象都执行一遍)
迭代器:遍历
状态模式:实现状态机
命令模式:函数封装成对象
中介模式:中间层,实现参与者解耦
策略模式:解耦策略的定义、创建和使用
备忘录模式:防丢失、撤销、恢复
模板方法:定义一个算法骨架,某些步骤在子类中实现
解释器模式:将语法解析的工作拆分到各个小类中,避免大而全的解析类
访问者模式:解耦操作和对象本身
设计模式之间的关系
设计模式之间的关系.jpg
最后
-
多思考、多问自己个为什么(为什么这么设计,这样设计有什么优缺点,这样设计是在怎么的情况下提出的...)
-
平时刻意训练,做到手中无剑、心中有剑!












网友评论