23种设计模式看这篇就够了(含PDF学习资料)

前言:

Java 中一般认为有 23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。虽然不需要全会,当然能掌握的越多越好。

总体来说设计模式分为三大类:

创建型模式

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

结构型模式

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

行为型模式

  1. 策略模式
  2. 模板方法模式
  3. 观察者模式
  4. 迭代子模式
  5. 责任链模式
  6. 命令模式
  7. 备忘录模式
  8. 状态模式
  9. 访问者模式
  10. 中介者模式
  11. 解释器模式

由于篇幅的限制,没有办法把23种设计模式全部详细的分享给大家,但是整理成了Pdf资料可以分享,需要获取《Java设计模式》的pdf文档帮忙转发分享此文然后再关注我私信回复“设计模式”获取资料领取方式吧!

1、单例模式

单例模式有 3 个特点:

  1. 单例类只有一个实例对象;
  2. 该单例对象必须由单例类自行创建;
  3. 单例类对外提供一个访问该单例的全局访问点
  • 单例模式的结构

单例模式的主要角色如下。

  • 单例类:包含一个实例且能自行创建这个实例的类。
  • 访问类:使用单例的类。
23种设计模式看这篇就够了(含PDF学习资料)

单例模式结构图

  • 单例模式的实现

Singleton 模式通常有两种实现形式。

第 1 种:懒汉式单例

该模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例。代码如下:

23种设计模式看这篇就够了(含PDF学习资料)

懒汉式单例

第 2 种:饿汉式单例

该模式的特点是类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。


23种设计模式看这篇就够了(含PDF学习资料)

2、适配器模式(Adapter模式)

该模式的主要优点如下。

  1. 客户端通过适配器可以透明地调用目标接口。
  2. 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
  3. 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。

其缺点是:对类适配器来说,更换适配器的实现过程比较复杂。

  • 模式的结构与实现
    • 类适配器模式可采用多重继承方式实现,如 C++ 可定义一个适配器类来同时继承当前系统的业务接口和现有组件库中已经存在的组件接口;
    • Java 不支持多继承,但可以定义一个适配器类来实现当前系统的业务接口,同时又继承现有组件库中已经存在的组件。

对象适配器模式可釆用将现有组件库中已经实现的组件引入适配器类中,该类同时实现当前系统的业务接口。现在来介绍它们的基本结构。

适配器模式(Adapter)包含以下主要角色。

  1. 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
  2. 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
  3. 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。

类适配器模式的结构图:

23种设计模式看这篇就够了(含PDF学习资料)

类适配器模式的结构图

对象适配器模式的结构图:

23种设计模式看这篇就够了(含PDF学习资料)

对象适配器模式的结构图

  • 模式的实现

(1) 类适配器模式的代码如下。

23种设计模式看这篇就够了(含PDF学习资料)

类适配器模式的代码

程序的运行结果如下:

<code>类适配器模式测试:
适配者中的业务代码被调用!/<code>

(2)对象适配器模式的代码如下。

23种设计模式看这篇就够了(含PDF学习资料)

对象适配器模式的代码

说明:对象适配器模式中的“目标接口”和“适配者类”的代码同类适配器模式一样,只要修改适配器类和客户端的代码即可。
程序的运行结果如下:

<code>对象适配器模式测试:
适配者中的业务代码被调用!/<code>

3、中介者模式

中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。

  • 中介者模式是一种对象行为型模式,其主要优点如下。
    • 降低了对象之间的耦合性,使得对象易于独立地被复用。
    • 将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。
  • 其主要缺点是:
    • 当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。

模式的结构与实现

  • 模式的结构
    • 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。
    • 具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色。
    • 抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能。
    • 具体同事类(Concrete Colleague)角色:是抽象同事类的实现者,当需要与其他同事对象交互时,由中介者对象负责后续的交互。

中介者模式的结构图

23种设计模式看这篇就够了(含PDF学习资料)

  • 模式的实现


23种设计模式看这篇就够了(含PDF学习资料)

抽象中介者


23种设计模式看这篇就够了(含PDF学习资料)

具体中介者


23种设计模式看这篇就够了(含PDF学习资料)

抽象同事类


23种设计模式看这篇就够了(含PDF学习资料)

具体同事类


23种设计模式看这篇就够了(含PDF学习资料)

调用者

程序的运行结果如下:

<code>具体同事类1发出请求。
具体同事类2收到请求。
-------------
具体同事类2发出请求。
具体同事类1收到请求。/<code>

《Java设计模式》PDF 目录

1、接口型模式

23种设计模式看这篇就够了(含PDF学习资料)

接口型模式

2、责任型模式

23种设计模式看这篇就够了(含PDF学习资料)

责任型模式

3、构造型模式

23种设计模式看这篇就够了(含PDF学习资料)

构造型模式

4、操作型模式

23种设计模式看这篇就够了(含PDF学习资料)

操作型模式

5、扩展型模式

23种设计模式看这篇就够了(含PDF学习资料)

扩展型模式

总目录


23种设计模式看这篇就够了(含PDF学习资料)

由于篇幅的限制,没有办法把23种设计模式全部详细的分享给大家,但是整理成了Pdf资料可以分享,需要获取《Java设计模式》的pdf文档帮忙转发分享此文然后再关注我私信回复“设计模式”获取资料领取方式吧!


分享到:


相關文章: