
自己从事iOS开发已经有3-4年了,从不懂架构设计,慢慢积累开发经验及业务学习。自己对架构有了新感觉,把自己了解的架构设计分享给大家,希望大家也能学习到架构的魅力。

举个例子,比如说房屋的建造,需要设计师,把图纸设计出来。架构师就相当设计图纸的工程师。然而像工地打工的就相当普通程序员。
好了进入今天的正题
1.什么是UML建模?
- UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言
- 用模型元素来组建整个系统的模型
- 模型元素包括系统中的类、类和类之间的关联、类的实例相互配合实现系统的动态行为等
- 举个例子:比如我们描述未来设计的房子?
- 第一种方式,对房子建造设计描述(程序开发)
- 第二种方式,进行画出房子的结构图 (UML建模语言)
- UML对语义的描述使开发者能在语义上取得一致认识,消除了因人
而异的表达方法所造成的影响。
UML图的构成部分
- 事物(Things):在UML建模语言事物,你可以简单的认为是元素。比如我们说的汽车零件(轮子,方向盘等等)
- 关系(Relationships):元素之间关系(类似于:汽车零件之间的关系)
- 图(Diagrams): UML建模(类似于制造汽车,画汽车图)
这就是UML,原本您会觉得很高深,其实就这样。
2.UML怎么使用?
2.1-建模工具(下载地址:http://staruml.io/download)

2.2-建模关系
- 泛化关系--generalization(就是继承关系)

图中左边是创建的父类Company,属性name
图中右边是创建的子类SonCompany,属性age.
当子类继承父类时,箭头指向父类,就是泛化关系,也就是所说的继承关系。
- 实现关系--realization(在iOS中类似协议,在java中类似于接口)

图中左边 是接口及接口方法
图中右边是实现类
通过接口或者协议实现方法
- 依赖关系--dependency
什么是依赖关系?
例如:已知A类和B类,在A类中引用B类,这种关系是`偶然性`,`临时性`,同时B类中发生了变化,
影响到A类,这种关系就称之为依赖关系。

比如:我早上去图书馆看书
我可以今天去看书,明天去看,不是天天去看书,体现了偶然性和临时性。如果这个图书馆不存在了,会影响到我,不能去看书了。
- 关联关系(单向关联)--Directed Association
关联关系其实本质就是依赖关系的特殊情况,两个类属于同一个层次
例如:
人看书,人若想看书,必须依赖书。而书不会给人带来依赖关系。

- 关联关系-双向关联 --Association
关联关系其实本质就是依赖关系的特殊情况
比如:用户和订单(用户保存订单号,订单对应用户)

`1`表示:单个
`0-1`表示:可以是0,也可以是1
`1..*`:表示至少有一个
`0..*`:表示可以使0->无穷大
`*`:表示任意
- 聚合关系(关联关系的特例)--Aggregation
强调整体和部分
整体和部分可以分离,各自有各自的生命周期,互不干扰,部分强调共享.
比如: 手机和电池,电池的生命周期不影响手机的生命周期.
如果电池坏了,是不是手机也需要换掉呢?答案是No.
再换一块电池就可以使用了.

-
组合关系--Composition
强调整体和部分
整体和部分不可以分离,共享生命周期,整体生命周期结束意味部分生命周期结束
比如:硬件和软件,公司和部门
硬件不存在了,软件也不能用了.
组合关系.png
3.UML建模模型图
-
用例图--Use Case Diagram
用例图.png
自驾旅游,汽车加油对于自驾旅游是一种包含的关系(include);
我们要吃饭是一种扩展关系(extend);
司机和自驾旅游一种关联关系. -
类图--Class Diagram
比如:公司类,科技有限公司
公司与科技有限公司之间的泛化关系,公司与京东之间的泛化关系.也成为继承关系.
-
顺序图(时序图)--Sequence Diagram
比如:微信支付的流程图
时序图.png
4.总结
以上内容是对UML建模,UML使用,UML建模关系及UML建模模型图等内容的介绍.也许你已经了解到了UML建模的魅力.它可以让你清晰的了解架构操作及交互.
如果您想了解更多架构模式设计呢?
请继续关注我(Follow Me).
接下来是更精彩的模式设计.
如果您喜欢这篇文章,请记得点赞哦.
如果有什么问题?我们可以相互讨论.
网友评论