美文网首页Objective-C设计模式
设计模式-案例分析:设计一个应用程序《二》

设计模式-案例分析:设计一个应用程序《二》

作者: liyoucheng2014 | 来源:发表于2019-01-01 15:27 被阅读42次

设计过程中有3个重要的里程碑

  • 想法的概念化
  • 界面外观的设计
  • 架构设计

一、想法的概念化

  • 可以用手指涂鸦的画板
  • 用户可以改变线条颜色和粗细
  • 允许用于保存涂鸦图
  • 允许用户打开保存的涂鸦图
  • 允许用户删除当前涂鸦图
  • 允许用户撤销和恢复涂鸦图

二、界面外观的设计

界面外观驱动的设计:尽早设计接近最终产品的完整界面外观与用户体验。
其它针对技术细节:数据驱动的设计、事件驱动的设计和测试驱动的设计

三、架构设计

我们要列出并考察通过细化原始需求而得出的一些问题。每个问题都有与原问题相关的细化而特定的特征或子问题。

  • 视图管理
    • 从一个视图到另一个视图的迁移


      典型的iOS应用程序设计中,控制器之间的依存图
    • 使用中介者来协调视图迁移


      引入终结者之后,控制器及其按钮之间的依存图

      中介模式:用一个对象来封装一组对象之间的交互逻辑

  • 如何表现涂鸦
    • 在屏幕上可以画“什么”


      使用Quartz 2D画点和线条的直观描述
    • 用组合结构来表示痕迹(mark)


      点与线条的组合结构
组合模式类图
  • 绘制涂鸦图

  • 如何表现保存的涂鸦图
    1)一般的对象保存过程分解为多个步骤
    a. 把对象结构序列化成结构化的文件块blob;
    b. 构建要保存blob的文件系统中的路径;
    c. 像普通文件一样保存blob。
    2)从文件系统加载同一blob并恢复原先的对象结构
    a. 重建文件系统中保存blob的路径;
    b. 像普通文件一样从文件系统加载blob;
    c. 反序列化并恢复原先的对象结构。

备忘录模式类图
  • 获取涂鸦图的状态


    Scribble的状态如何保存为ScribbleMemento对象的时序图
通过ScribbleMemento对象恢复Scribble对象的时序图
  • 恢复涂鸦图的状态
  • 用户操作
    • 浏览涂鸦缩略图的列表
    • 涂鸦图的撤销和恢复
    • 变更线色和线宽
    • 删除屏幕上的当前涂鸦图

设计模式回顾

  • 中介者
  • 组合
  • 访问者
  • 代理
  • 备忘录
  • 命令
  • 观察者
抽象操作的协议 抽象操作和具体操作的抽象类 具体类带有操作、属性、实例变量 左边为原来的类,右边为它的范畴扩展 左边为隐式类,右边为参与者类 一个类实例化另一个类 类继承 接口继承 相识

ConcreteClass拥有对AnotherClass对象的引用,但不拥有AnotherClass对象的实体

聚合

ConcreteClass和AnotherClass构成聚合(aggregation)体。聚合体由ConcreteClass来表示。AnotherClass不是聚合体,使用双箭头来表示多于一个。ConcreteClass包含有AnotherClass的多个实例,即instanceVariable_。

伪代码 带有圆形根部的箭头表示源自aClass对象的引用的对象图

相关文章

网友评论

    本文标题:设计模式-案例分析:设计一个应用程序《二》

    本文链接:https://www.haomeiwen.com/subject/oevnlqtx.html