设计模式的书中都会涉及到UML类图,所以在学习设计模式之前有必要先了解一下UML。UML类图关系分为六种:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
1.泛化(Generalization)
【关系】是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的特征和行为。例如:动物和老虎,老虎是动物的一种,它具有动物的所有特征和行为。
【箭头指向】带三角箭头的实线,箭头指向父类
2.实现(Realization)
【关系】实现是一种类与接口的关系,表示类实现接口所有的特征和行为。
【箭头指向】带三角箭头的虚线,箭头指向接口。
3.关联(Association)
【关系】它是一种拥有关系,它使一个类知道其它类的方法和属性
【方法实现】成员变量
【箭头指向】带普通箭头的实线,指向被拥有者
4.聚合(Aggregation)
【关系】聚合是部分和整体的关系,部分可以不依靠整体单独存在,聚合关系是一种强关联关系。例如:汽车和轮胎。
【代码实现】成员变量
【箭头指向】带空心菱形的实线,菱形指向整体
5.组合(Composition)
【关系】组合是整体与部分的关系,但是部分不能单独整体存在。组合是一种关联关系,比聚合还要强的关系,它要求普通聚合关系中代表整体的对象负责代表部分的对象的声明周期。例如:公司和部门的关系,公司倒闭那这个部门也就不存在了。
【代码体现】成员变量
【箭头指向】带实心菱形的实线,菱形指向整体。
6.依赖(Dependency)
【关系】依赖是一种使用关系,是一个类实现需要另一个类的协助,所以尽量不要用相互依赖的关系。
【代码实现】局部变量、方法的参数和对静态属性的调用
【箭头指向】带虚线的箭头,指向被使用者