栗子 软件
- 车的类图结构为<>,表示车是一个抽象类
- 它有两个继承类:小汽车和自行车,它们之间的关系为实现关系,使用带空心箭头的虚线表示
- 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示
- 小汽车与发动机和轮胎之间是组合关系,使用带实心箭头的实线表示
- 学生与班级之间是聚合关系,使用带空心箭头的实线表示
- 学生与身份证之间为关联关系,使用一根实线表示
- 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示
- 实现关系是继承自抽象类,泛化关系是继承自非抽象类
- 组合关系是强依赖的,比如上图中的小汽车由发动机和轮胎组成,小汽车不在了,发动机和轮胎也是不存在了
- 聚合是不是强依赖的,比如上图中的一个班级由学生构成,班级不在了,学生还在
- 关联关系是强关联的,比如上图中学生跟身份证关联了,可以说是身份证可以代表学生,学生也能代表身份证
- 依赖关系一般是单向的,双向依赖是非常糟糕的,比如上图中学生依赖自行车,但是自行车依赖学生是说不通的,同时学生也可以依赖价值百万的公交车或价值上亿的地铁,只是临时性的依赖
看懂UML图对理解设计模式是有很大帮助的
