Java设计之道——通过UML理解23种设计模式

UML类图

从一个示例开始,请看以下这个类图,类之间的关系是我们需要关注的:

  • 泛化(generalize)与实现(realize)
    泛化:SUV扩展和继承小汽车的功能;实现:小汽车实现车这个概念。
  • 聚合(aggregation)与组合(composition)
    聚合:班级由多个学生组成;组合:轮胎和发动机组合成为小汽车。
  • 关联(association)与依赖(dependency)
    关联:学生上学使用了身份证;依赖:学生上学需要使用自行车。

简单来说。
泛化和实现区别在于:继承的是实体还是抽象类/接口
聚合和组合区别在于:上层消失是否部分也会消失
关联和依赖的区别在于:之间的联系是天然的还是临时性的

泛化(generalize)与实现(realize)

泛化关系用一条带空心箭头的直接表示:
在这里插入图片描述

实现关系用一条带空心箭头的虚线表示:
在这里插入图片描述
”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才可以用来定义对象。

实现可以理解为接口继承和抽象类的继承,泛化可以理解为实体继承

聚合(aggregation)与组合(composition)

聚合关系用一条带空心菱形箭头的直线表示:
在这里插入图片描述
聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义。

组合关系用一条带实心菱形箭头直线表示:
在这里插入图片描述

组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了;
聚合关系与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;

关联(association)与依赖(dependency)

关联关系是用一条直线表示的,关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;
在这里插入图片描述
依赖关系是用一套带箭头的虚线表示的,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生。
在这里插入图片描述
关联和依赖的区别在于:
依赖描述一个对象在运行期间会用到另一个对象,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化。
关联是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构

23种设计模式

创建型模式

创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。

  1. 简单工厂模式 ———— ☆☆☆☆
  2. 工厂方法模式———— ☆☆☆☆☆
  3. 抽象工厂模式———— ☆☆☆☆☆
  4. 建造者模式————— ☆☆
  5. 原型模式—————— ☆☆☆
  6. 单例模式—————— ☆☆☆☆

结构型模式

结构型模式(Structural Pattern)描述如何将类或者对 象结合在一起形成更大的结构,就像搭积木,可以通过 简单积木的组合形成复杂的、功能更为强大的结构。

  1. 适配器模式————— ☆☆☆☆
  2. 桥接模式—————— ☆☆☆
  3. 组合模式—————— ☆☆☆☆
  4. 装饰模式—————— ☆☆☆
  5. 外观模式—————— ☆☆☆☆☆
  6. 享元模式—————— ☆
  7. 代理模式—————— ☆☆☆☆

行为型模式

行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。
行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。

  1. 责任链模式————— ☆☆☆
  2. 命令模式—————— ☆☆☆☆
  3. 访问者模式————— ☆
  4. 迭代器模式————— ☆☆☆☆☆
  5. 中介者模式————— ☆☆
  6. 备忘录模式————— ☆☆
  7. 观察者模式————— ☆☆☆☆☆
  8. 状态模式—————— ☆☆☆
  9. 策略模式—————— ☆☆☆☆
  10. 模板方法模式———— ☆☆☆
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值