基本模式

网关

入口对象是对外部系统或资源访问的封装

网关模式可以是简单的接口转发,与外观模式不同的是,外观接口通常由服务端提供,具有通用性

映射器

在两个独立的对象之间的中间层

主要是在两个子系统之间建立通信,并且不被子系统所感知

要达到这样的目的,需要监听子系统的通信请求

层超类型

某一类型充当一层中所有类型的超类型

当一层中的所有对象都具有共同的一些特性时,这些特性就可以被抽取成超类代码

分离接口

在与接口定义分离的地方实现该接口

这种模式在微服务的服务间接口很常被用到

parent
|- order-service
|-- order-service-api
|-- order-service-impl

注册表

一个全局可见的对象,其他对象可以通过此对象获得

但当增加一种新类型时,注册表必须被修改

但也可以使用隐式注册表,只是会失去编译时检查的优点

值对象

小而简单的对象,一旦创建字段就不可修改,判等时不依据标识ID

货币

表示一个货币值的对象

特殊情况(Null Object)

提供特殊行为的子类

Person getUser(String id) {
  // ...
  // if not found
  return Person.EMPTY
}

插件

通过配置来连接类,在运行时决定实际的实现类,可以使用工厂模式动态化对象的创建过程

像Spring的条件化注入就是一种插件的实现手段

@CondtionalOnProperties(...)
class DevService implements Service{...}
@CondtionalOnProperties(...)
class ProdService implements Service{...}

服务桩

在测试时mock外部服务,其实就是插件的一种具化形式,通过提供一个统一接口,隔离生产环境与开发环境实际调用的接口

记录集

JDBC中的 ResultSet

表格数据在内存的表现形式