iOS设计模式解析(一)
2018, Oct 13
iOS设计模式解析(一)
案例分析:设计一个应用程序
用户需求:
- 可以用手指涂鸦的画板
- 用户可以改变线条颜色和粗细
- 允许用户保存涂鸦
- 允许用户打开已经保存的涂鸦
- 允许用户删除涂鸦
- 允许用户撤销和恢复涂鸦
### 主要问题和细化特征:
- 视图管理
-
- 从一个视图到另外一个视图的迁移
-
- 使用中介者来协调视图的迁移
- 如何表现涂鸦
-
- 在屏幕上可以画 ‘什么’
-
- 用组合结构来表示痕迹 (mark)
-
- 绘制涂鸦图
- 如何表现保存的涂鸦
-
- 获取涂鸦的状态
-
- 恢复涂鸦的状态
- 用户操作
-
- 浏览涂鸦缩略图的列表
-
- 涂鸦图的撤销和恢复
-
- 变更线色与线宽
-
- 删除屏幕上的当前涂鸦图
视图管理
分析业务 我们需要3个控制器:
- CanvasViewController
- PaletteViewController
- ThumbnailViewController
为了完成视图的迁移和避免业务拓展引发的耦合 需要使用 中介者 来解耦合
文件保存
使用 备忘录 的设计模式 进行文件保存的处理
原型设计模式
以下场景下, 考虑使用原型设计模式:
- 需要创建的对象应独立于其类型和创建方式
- 需要实例化的类是运行时决定的
- 不想要与产品层次相对应的工厂层次
- 不同类的实例间的差异仅仅是状态的若干组合。 因此复制相应数量的原型比手工实例化更加方便
- 类不容易创建, 比如每个组件可以把其他组件作为子节点的组合对象。复制已有的组合对象并对副本修改会更加容易
原型设计模式的本质是 通过 copy 利于复用
工厂设计模式
何时使用:
- 编译时无法准确预期要创建的对象的类
- 类想让其子类决定在运行时创建什么
- 类有若干辅助类作为其子类, 而你想返回哪个子类这个信息局部化。