(二)基础 —— UML 类图

UML 类图存在的意义是为了帮助开发人员清理思路,这样有助于学习设计模式,能够通过UML类图宏观的了解到类与类和接口与接口之间的关系。


在 UML 类图中,关系是指类与类之间的关系(这里类的含义也包括接口与抽象),常见的关系有以下几种:

  • 泛化(Generalization)
  • 实现(Realization)
  • 关联(Association)、聚合(Aggregation)、组合(Composition)
  • 依赖(Dependency)

UML 类图的关系主要体现在:

  • 类与类之间的关系
  • 类与接口之间的关系
  • 接口与接口之间的关系

各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖


泛化关系(Generalization)

  • 泛化是类与类或接口与接口之间的一种继承关系,它指定了子类如何特化父类的所有特征和行为。
    比如:一个类继承自另一个类,一个接口继承自另一个接口。
  • 【体现形式】:在 PHP 中通过 extends 关键字来标识。
  • 【图形特征】:用实线连接的空心三角形箭头,箭头指向父类。

实现关系(Realization)

  • 实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。
    比如:一个类实现了一个或多个接口。
  • 【体现形式】:在 PHP 中通过 implements 关键字来标识。
  • 【图形特征】:用虚线连接的空心三角形箭头,箭头指向接口。

依赖关系(Dependency)

  • 依赖是一种类与类之间的使用关系,也是类与类之间最弱的关系,但尽量不要使用双向的互相依赖,而是更多使用单向依赖。
    比如:一个类A使用了类B,这种关系具有临时性特征,可能是类A的某个方法参数依赖了类B,也可能是类A的某个局部变量依赖了类B,那么当类B发生变更的时候,类A可能也要受到影响。
  • 【体现形式】:局部变量、方法的参数、或静态方法的调用。
  • 【图形特征】:虚线连接的普通箭头,箭头指向被使用者。

关联关系(Association)

  • 关联是一种类与类之间,或接口与接口之间的拥有的关系,它使一个类知道另一个类的属性和方法,体现的是一种强依赖的关系,而且两个类之间的关系是平等的,关联可以是双向的,也可以是单向的。
  • 【体现形式】:成员变量,类B作为类A的成员变量出现;类A拥有类B的实例。
  • 【图形特征】:实现连接的普通箭头,箭头指向被拥有者,双向的关联可以有两个普通箭头或者没有箭头,而单向关联也就只有一个箭头了。

聚合关系(Aggregation)

  • 聚合是关联关系的一种,主要表达的是整体与部分之间的关系,但部分脱离整体又可以独立存在,并且部分拥有独立的生命周期。
    比如:A对象可以包含B对象,但是B对象不是A对象的组成部分,B对象可以被单独使用,又可以独立运行。
  • 【体现形式】:成员变量,变量赋值可以在整体的构造方法中,也可以在普通的 set 方法中(依赖倒置,这也体现了两者可以具有不同的生命周期)。
  • 【箭头特征】:实线连接的空心菱形箭头,菱形箭头指向整体。

组合关系(Composition)

  • 组合关系也是关联关系的一种,并且同样是描述整体与个体之间的关系,它是比聚合关系还要强的关联关系,它要求普通的聚合关系中,代表整体的对象负责代表部分的对象的生命周期,也就是说部分生命周期受整体影响,如果整体不存在了,那么部分也就不存在了。
  • 【体现形式】成员变量,变量的赋值是在整体的构造方法中创建,外界不知道部分的存在,那么整体没了,部分也就不存在了(两者具有相同的生命周期)。
  • 【箭头特征】实线连接的实心菱形箭头,菱形指向整体。

下面的这张图,比较形象的展示了各种类图关系:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Di...
    雷雷_zll阅读 13,226评论 0 14
  • 忘记了uml类图连线之间的关系,记录一下。 1. 关联关系 关联(Association)关系是类与类之间最常用的...
    cutieagain阅读 1,820评论 0 2
  • 类 类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象 在画类图步骤: 了解事实流程 根据事实流程识...
    Courage_CYY阅读 802评论 0 1
  • 修好心,修好车 明天去同行路路通学习,知道自己缺什么。 目的:把自己的店铺先打造成有复制能力的标杆店、并超越标杆
    京心达张新波阅读 191评论 0 0
  • 谈乱序执行和内存屏障https://blog.csdn.net/dd864140130/article/detai...
    shoulda阅读 509评论 0 0