小编典典

Java核心库中的GoF设计模式示例

all

这个问题的答案是 社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。

我正在学习 GoF Java 设计模式,我想看看它们的一些真实示例。Java 核心库中这些设计模式的一些很好的例子是什么?


阅读 180

收藏
2022-03-03

共1个答案

小编典典

您可以在Wikipedia中找到很多设计模式的概述。它还提到了
GoF 提到了哪些模式。我将在这里总结它们并尝试分配尽可能多的模式实现,在 Java SE 和 Java EE API 中都可以找到。


创造模式

抽象工厂

(可通过返回工厂本身的创建方法识别,该工厂本身又可用于创建另一个抽象/接口类型)

生成器 (可通过返回实例本身的创建方法识别)

工厂方法

(可通过返回抽象/接口类型实现的创建方法识别)

原型(可通过返回具有相同属性的 不同

实例的创建方法识别) __

单例 (可通过创建方法识别,每次都返回 相同

的实例(通常是其自身))


结构图案

适配器(可通过采用 不同

抽象/接口类型的实例并返回自己/另一个抽象/接口类型的实现来 装饰/覆盖 给定实例的创建方法识别)

(可通过创建方法识别,该方法采用 不同

抽象/接口类型的实例并返回 委托/使用 给定实例的自己的抽象/接口类型的实现)

  • 还没有想到。一个虚构的示例将new LinkedHashMap(LinkedHashSet<K>, List<V>)返回一个不可修改的链接地图,该地图不会克隆项目,而是 使用 它们。然而,java.util.Collections#newSetFromMap()andsingletonXXX()方法很接近。

复合(可通过将 相同

抽象/接口类型的实例放入树结构的行为方法识别) __

装饰器 (可通过创建方法识别,该方法采用

相同 抽象/接口类型的实例,增加了额外的行为)

外观(可通过内部使用 不同

独立抽象/接口类型实例的行为方法识别) __

Flyweight

(可通过返回缓存实例的创建方法识别,有点“多吨”的想法)

代理

(可通过创建方法识别,该方法返回给定抽象/接口类型的实现,而后者又 委托/使用 给定抽象/接口类型的 不同 实现)


行为模式

责任链

(可通过行为方法识别,该行为方法(间接)在队列中 相同 抽象/接口类型的 另一个 实现中调用相同的方法) __

命令

(可通过抽象/接口类型中的行为方法识别,该类型调用 不同 抽象/接口类型的实现中的方法,该抽象/接口类型在创建期间已由命令实现 封装)

解释器(可通过返回给定实例/类型的 结构

不同的实例/类型的行为方法识别;请注意,解析/格式化不是模式的一部分,确定模式以及如何应用它) __

迭代器(可通过行为方法识别, 从队列中按顺序返回

不同类型的实例)

中介者

(可通过行为方法识别委托/使用给定实例的不同抽象/接口类型(通常使用命令模式)的实例)

纪念品 (可通过内部改变 整个

实例状态的行为方法识别)

观察者(或发布/订阅)

(可通过行为方法识别,该行为方法调用 另一个 抽象/接口类型的实例上的方法,取决于自己的状态)

状态

(可通过行为方法识别,该方法根据实例的状态改变其行为,可以从外部控制)

策略

(可通过抽象/接口类型中的行为方法识别,它调用 不同 抽象/接口类型的实现中的方法,该方法已作为方法参数 传入 策略实现)

模板方法

(可由已经具有由抽象类型定义的“默认”行为的行为方法识别)

访问者(可通过两种 不同

的抽象/接口类型识别,这些类型定义了方法,这些方法采用 其他 抽象/接口类型;一个实际上调用另一个的方法,另一个在其上执行所需的策略)

2022-03-03