1.继承 Generalization
- 表达父类与子类的关系:is-a
- 形象说明:小狗继承与动物,符合里氏替换的原则
- 应用场景:MainActivity也是使用了继承
2.实现 Realization
- 表示接口与实现类的关系:can-do
- 形象说明:小狗实现了狗叫接口
- 应用场景:访问者模式中的一个例子
3.关联 DirectedAssociation
- 类与类之间的一种对应关系,可以是单向的,也可以是双向的:links-a
- 形象说明:公司可以使用员工,员工也可以获取公司的福利
4.聚合 Aggregation
-
关联关系的一种,表示整体与部分的关系,暂时组装的关系:has-a
-
形象说明:学校与学生为聚合关系,学生聚合到学校,学校消失了,学生还存在,学生完全可以去另一个学校继续上学
应用场景:策略模式中,CalculatorContext与Istrategy为聚合关系
// 策略模式CalculatorContext弱拥有IStrategy策略对象
public class CalculatorContext {
private IStrategy mStrategy;
public void setStrategy(IStrategy strategy) {
this.mStrategy = strategy;
}
public int calculatePrice(int distance) {
return mStrategy.calculatePrice(distance);
}
}
5.组合 Composition
-
关联关系的一种,比聚合更强的关系,整体与部分具有统一的生存期:contains-a
-
形象说明:学校与年级为组合关系,学校消失了,年级就不会存在,二者完成不可分
6.依赖 Dependency
- 一个类用到另一个类,通常是单向关系:depends-a
表现形式: 方法参数,局部变量 - 形象说明:人给小狗洗澡,小狗作为参数传入
- 应用场景:工厂方法设计模式中,具体工厂依赖具体产品