读《Design Patterns by Tutorials》笔记——UML图

在学习设计模式之前,需要先来学习 UML 图。为什么先要学习 UML 图呢?因为后面的设计模式,我们都可以用一幅 UML 图来表示,所以当我们看到一幅 UML 图,就可以明白这是什么设计模式。然后如何用代码去实现它。

什么是 UML 图

UML 图包含类、协议、属性、方法和关系。 一个方块表示一个类。下面有一个非常简单的类 Dog:

为了表示一个类继承另外一个类,使用一个空心箭头:

但是我们通常不把空心箭头叫做“inherits from”,而是叫成“is a”,例如:可以用下面的图表示 SheepDog 继承自 Dog 。

我们可以这样来理解这个图“SheepDog 是一个 Dog”。

在 UML 中使用一个简单的箭头表示属性,在 UML 中叫做“关联”。

通常把属性这个箭头叫做“has a”,比如下图:

也可以通过在箭头下面描述一个区间来表示一对多的关系,如下图表示一个 Farmer 有好多 Dog:

可以在一个 UML 图中使用多个箭头和方块,下面这个图表示一个 Farmer 有一个 SheepDog,这个 SheepDog 是一个 Dog。

在 UML 图中,也可以使用方块表示一个协议,为了区别类,需要在协议名前面加上<>。 下图表示一个 PetOwning 协议:

使用一个空心箭头和虚线来表示一个类遵守了一个协议:

你可以把它理解成“实现”或者“符合”。 使用一个普通箭头和虚线来表示依赖。ULM 有意模糊依赖的概念。因此,无论什么时候使用依赖的关系都应该注释上使用的目的。比如,可以使用依赖箭头表示以下情况:

  • 一个 weak 属性或者 delegate;
  • 一个作为参数传递给一个方法的对象,并且没有作为属性引用;
  • 一种松耦合或者回调,比如:一个从 view 到 controller 的 IBAction

下图表示 Dog 代理到 PetOwning 对象:

也可以在 ULM 中表示属性和方法,例如,下图表示 PetOwning 协议有一个 name 属性和 petNeedsFood(_:)方法:

如果一个箭头的意义很明确,可以删除一些解释性文字,通常可以删除继承,属性和实现的解释文字。然而,应该保留依赖的文字。因为,他们的意义通常不太明确。 下面是一副表示 Farmer 和 Dog 的完整的 UML 图。Dog 代理到 PetOwning 对象。

UML 图是学习设计模式得基础,我们已经简单学了一些基础的 UML 图。下面将去学习一些设计模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值