设计模式(一)---统一建模语言基础

统一建模语言基础知识

统一建模语言(Unified Modeling Language,UML)是一种可视化的标准建模语言,他是一种分析和设计语言,通过UML可以构造软件系统的蓝图。

在设计模式中,需要使用UML来分析和设计每一个模式的结构,描述每一个模式实例,并对部分模式进行深入的解析。因此,在学习设计模式之前,需要先学习一些基本的UML知识。


UML介绍

UML已经成为面向对象软件分析与设计建模的标准,其应用越来越广泛,在学习设计模式之前需要掌握一些基本的UML知识,以便于理解每个模式和模式实例的结构,并通过一些UML图形来加深对设计模式的理解。

UML结构

UML是由图形符号表达的建模语言。其结构见下图

UML特点

  • 工程化
  • 规范化
  • 可视化
  • 系统化
  • 文档化
  • 智能化

类图

类图是使用频率最高的UML图之一。

类与类图

  • 类是一组具有相同属性、表现相同行为的对象的抽象
  • 类图用来描述不同类以及它们之间的关系

    类之间的关系

  • 关联关系(Association) 是类与类之间最常见的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间的联系。在UML类图中,用实线连接有关联的对象对应的类
    • (1)双向关联
    • (2)单向关联
    • (3)自关联
    • (4)多重性关联
    • (5)聚合关系
    • (6)组合关系
  • 依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另外一个事物时使用依赖关系。

    大多数情况下,依赖关系体现在某一类的方法使用另一个类的对象作为参数。==在UML类图中,依赖关系用带箭头的虚线表示,由依赖一方指向被依赖一方。==

  • 泛化关系(Generalization) 也就是继承关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类被称作派生类。

    ==在UML类图中,泛化关系用带空心三角形的直线来表示。指向父类==

  • 接口与实现关系

    ==在UML类图中,类与接口之间的实现关系用带空心三角形的虚线来表示。指向接口==

    类图实例


附加plantUML代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@startuml
Class RegisterForm{
- user:UserDTO
- userDao:IUserDAO
}


interface IUserDAO{
+ addUser(UserDTO usder):boolean
}

Class OracleUserDAO{
+ addUser(UserDTO usder):boolean
}
Class UserDTO{
- userAccount:String
- userPassword:String
+ getUserAccount():String
+ setUserAccount():void
+ getUserPassword():String
+ setUserPassword():void
}
RegisterForm *--> UserDTO :组合关系
RegisterForm o..> IUserDAO :聚合关系
IUserDAO ..> UserDTO : 依赖关系
IUserDAO <|.. OracleUserDAO : 实现关系

@enduml
  • 在RegisterForm中可以直接实例话UserDTO,因此他们之间可以使用组合关联
  • 在RegisterForm中不能直接实例话IUserDAO的子类,可以针对接口编程,在通过注入的方式传入一个IUserDao接口的子类对象,因此RegisterForm和IUserDAO之间有聚合关系

顺序图

顺序图是最常用的系统动态建模工具之一,也是使用频率最高的交互图,他用于表示对象之间的动态交互,而且以图形化的方式描述了对象间消息传递的时间顺序。在设计模式中,我们将使用顺序图来描述某些模式中对象之间的交互关系

顺序图定义

顺序图(Sequence Diagram)是一种强调对象消息传递次序的交互图,又称为时序图或序列图

顺序图组成元素与绘画

在UML中,顺序图将交互关系表示为一个二维图,纵向是时间轴,时间沿竖线向下延伸;横向轴表示了在交互过程中的独立对象,对象的活动用生命线表示。顺序图由执行者(Actor)、生命线(Lifeline)、对象(Object)、激活框(Activation)和消息(Message)等元素组成。

顺序图实例

TODO

状态图

对于系统中哪些有多种状态的对象,状态图是一种常用的建模手段。状态图用于描述对象的各种状态以及状态之间的转换。在设计模式中,将使用状态图来描述某些模式中对象的状态及状态间和转换。

状态图定义

状态图(Statechart Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。只有那些有重要交互行为的类,我们才会使用状态图来描述,一个状态图包括一系列的状态及状态之间的转移。

状态图组成元素与绘制

在UML中,包含如下组成元素:

  • 状态(State):又称中间状态,用圆角矩形框表示,在一个状态图中可有多个状态。
  • 初始状态(Initial State):由称为初态,用一个黑色的实心圆圈表示,在一个状态图中只能有一个
  • 结束状态(Final State):又称为终止状态或终态,用一个实心圆外加圆圈表示。
  • 转移(Transition):用从一个状态到另一个状态之间的连线和箭头说明状态的转移情况。

    状态图实例

    TODO