UML 有3中基本的构造块
事物:事物是对模型中最具有代表性的成分的抽象,包括
- 结构事物,如类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(ActiveClass)、组件(Component)和节点(Node);
- 行为事物,如交互(Interaction)、态机(Statemachine)
- 分组事物(包,Package)
- 注释事物(注解,Note)
关系 关系用来把事物结合在一起,包括
- 依赖
- 关联
- 泛化
- 实现
图 UML 建模
关系
泛化关系 什么是泛化呢,很简单点来说,就是面向对象中的继承,举个例子,一个自定义的 tableViewCell 就是继承于UITableViewCell,这时它们的关系就是泛化关系了。
实现关系 简单点来说,实现相当于iOS中的协议,在Java中相当于接口,对于iOSer来说,什么是协议就不多说了,直接上代码:
@objc public protocol CustomCellDelegate: NSObjectProtocol {
@objc optional func buttonCell(clickButton button: UIButton)
}
class CustomCell: UITableViewCell {
open weak var delegate: CustomCellDelegate?
private lazy var button: UIButton = UIButton()
}
在 CustomViewController 实现了 CustomCellDelegate 协议方法,CustomViewController 和 CustomCellDelegate 就是实现关系了,注意,在iOS中,protocol 和 delegate 经常是一起出现的,两者关系不懂的可以补下基础,也可以看下我之前写的文章。
- 依赖关系 在UML中,什么是依赖关系呢,简单的理解,就是对象A使用到对象B,并且这是有偶然性的、临时性的,但对象B的变化会影响到对象A。这里举一个很简单的例子,我想发打电话给朋友,我就需要使用到手机,这里我和手机或者电脑就是依赖关系。因为不同牌子的手机,可能有不同的操作,所以说手机的变化会影响到我的使用。而且打电话不一定需要用手机,也可以使用固定电话或者其它,所以这是有偶然性的、临时性的。
class Person: NSObject {
func callFriend(_ phoneNum: String) {
let phone = Phone()
phone.call(phoneNum)
}
}
class Phone: NSObject {
func call(_ phoneNum: String) { }
}