跳至主要內容
模板模式(下):模板模式与 Callback
本文内容

前言

上一章 中,讲解了模板模式的原理和应用,其主要功能就是 提高代码的复用性、基于扩展点可以在不改变源码的情况下方便的扩展功能

而我们常用的 Callback 回调技术,也能起到模板模式的两大作用,那他们有什么区别呢?


AruNi_Lu大约 6 分钟设计模式设计模式与范式
模板模式(上):理解模板模式
本文内容

前言

本章来讲解另一个比较常用的行为型设计模式 — 模板模式,该模式主要用来解决 复用和扩展 两个问题。

1. 模板模式原理与实现

1.1 原理

模板模式,全称是模板方法模式(Template Method Design Pattern),GoF 是如下定义的:


AruNi_Lu大约 7 分钟设计模式设计模式与范式
观察者模式(下):实现一个 EventBus 框架
本文内容

前言

在上一篇文章中,我们知道了 观察者模式有几种不同的实现方式

  • 同步阻塞:经典实现方式,主要为了代码解耦;
  • 异步非阻塞:除了解耦外,也能提高执行效率;
  • 进程内:上面两种就属于进程内,在同一个程序中执行的;
  • 进程间:更加彻底的解耦,一般基于 MQ 实现。

那么本篇文章将聚焦于异步非阻塞的方式,实现一个类似 Google Guava EventBus 的通用框架,对观察者模式进行封装,让其在项目中使用更简便。

EventBus 项目地址:https://github.com/AruNi-01/DesignPattern/tree/main/dp/src/observer/eventbus

Guava 地址:https://github.com/google/guava ,直接下载 jar 包添加进自定义的目录,然后将该目录 Add as Library 即可使用,或者使用 Maven 亦可。


AruNi_Lu大约 12 分钟设计模式设计模式与范式
观察者模式(上):理解观察者模式
本文内容

前言

前面我们学习完了创建型和结构型的设计模式,从这篇文章开始,将学习最后一个类型的设计模式—行为型

创建型主要解决的是 “对象的创建” 问题,结构型主要解决的是 “类或对象的组合组装” 问题,而行为型主要解决的是 “类或对象之间的交互” 问题

行为型设计模式比较多,有:观察者模式、模版模式、策略模式、责任链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

观察者模式在实际开发中也比较常用,根据应用场景的不同有着不同的实现方式,常见的有如下几种:

  • 同步阻塞的实现
  • 异步非阻塞的实现
  • 进程内的实现
  • 跨进程的实现

这篇文章首先介绍观察者模式的原理、应用场景,以及它的几种不同实现方式。下一篇文章将基于观察者模式实现一个异步非阻塞的 EventBus,将观察者模式运用到实际场景中。


AruNi_Lu大约 8 分钟设计模式设计模式与范式
享元模式
本文内容

前言

上一篇文章讲的组合模式,主要应用在数据能表示成树形结构,所以不太常用。

而本篇文章要讲的 享元模式,也不太常用,因为它的使用场景也比较特殊。不过在 Java 中,你经常使用的 String、Integer 都使用到了享元模式


AruNi_Lu大约 12 分钟设计模式设计模式与范式
组合模式
本文内容

前言

当你头一次看到组合模式时,可能会联想到组合关系,但其实 组合模式跟面向对象设计中的 “组合关系” 完全是两码事

组合模式 在平时开发中不常使用,因为它的应用场景非常特殊,主要用来 处理树形结构数据


AruNi_Lu大约 6 分钟设计模式设计模式与范式
门面模式
本文内容

前言

我们平时在开发接口的时候,一个常见的问题就是 接口粒度 的问题。

为了保证接口的 可复用性(或叫通用性),我们需要把接口设计得 细粒度一点,职责单一一点。但这样又会导致调用者在使用时需要调用 n 多个细粒度的接口,才能完成某个功能,这称为接口的易用性不好。

而如果 接口的粒度设计得过大,一个接口要做 n 多件事情,返回 n 多个数据,就会导致接口 不够通用、可复用性不好

那如何解决接口的 可复用性和易用性之间的矛盾 呢?这就要谈到我们本章的 门面模式 了。


AruNi_Lu大约 5 分钟设计模式设计模式与范式
适配器模式
本文内容

前言

适配器模式也是一种常用的结构型模式,它主要有两种实现方式,类适配器和对象适配器。下面就来介绍下适配器模式的原理和它的应用场景,以及它和前面的装饰器、代理模式又有何区别?

1. 什么是适配器模式

1.1 定义


AruNi_Lu大约 13 分钟设计模式设计模式与范式
装饰器模式
本文内容

前言

装饰器模式也是一种结构型模式,在 Java 的 IO 类中就有使用到,所以下面我们就从 Java IO 类的设计,来看看什么是装饰器模式?使用它有什么好处?它与其他的结构型模式又有什么区别?

1. Java IO 类

Java 的 IO 类库非常庞大和复杂,有十几个类,我当时在学 IO 操作时就被这些类给绕晕了。


AruNi_Lu大约 8 分钟设计模式设计模式与范式
桥接模式
本文内容

前言

桥接模式在日常开发中使用得并不多,而且理解起来也有难度,所以下面只是简单地介绍下桥接模式,以及它怎么运用。

1. 什么是桥接模式

桥接模式 的定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化


AruNi_Lu大约 5 分钟设计模式设计模式与范式
2