Design Patterns

UML类图

参考:设计模式之 UML 类图

UML例子

UML_example

class Student {
    private String name;
    public String getName() {
	return name;
    }
    public void takeExam(Course course) {
        course.test();
    }
}

class Course {
    private String courseName;
    public void test() {
        // take exam...
    }
}
  • 类名叫做 Student 和 Course
  • + 代表 public 公共,- 代表 private 私有,# 代表 protected
  • 成员变量类型写在前,参数名称写在后
  • 函数传递参数,参数名写在前,类型写在后
  • 函数返回值写在函数签名的后面
  • 两个类之间若存在关系,可使用箭头进行关联,具体关联规则在下文介绍
  • 箭头上的数字代表 1 个学生可以不参加课程,也可以无限制参加各种课程
  • 1 代表一个,0..* 代表 0 个到无限个

类与类的关系

依赖 (Dependency)

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。

UML_dependency

关联 (Association)

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。

UML_association

聚合 (Aggregation)

关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

UML_aggregation

组合 (Composition)

存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。

UML_composition

继承 (Generalization)

继承表示类与类 (或者接口与接口) 之间的父子关系。

UML_generalization

实现 (Implementation)

表示一个类实现一个或多个接口的方法

UML_implementation

模式分类

  • 创建型模式
    • 工厂方法:Factory Method
    • 抽象工厂:Abstract Factory
    • 建造者:Builder
    • 原型:Prototype
    • 单例:Singleton
  • 结构型模式
    • 适配器
    • 桥接
    • 组合
    • 装饰器
    • 外观
    • 享元
    • 代理
  • 行为型模式
    • 责任链
    • 命令
    • 解释器
    • 迭代器
    • 中介
    • 备忘录
    • 观察者
    • 状态
    • 策略
    • 模板方法
    • 访问者