0%

传输对象模式 ( Transfer Object Pattern )

传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据

传输对象也被称为数值对象,没有任何行为

传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输

服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它

对于客户端,传输对象是只读的

客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值

以下是这种设计模式的实体:

  • 业务对象(Business Object) - 为传输对象填充数据的业务服务
  • 传输对象(Transfer Object) - 简单的 POJO,只有设置/获取属性的方法
  • 客户端(Client) - 客户端可以发送请求或者发送传输对象到业务对象
阅读全文 »

服务定位器模式 (Service Locator Pattern)

服务定位器模式(Service Locator Pattern)用于想使用 JNDI 查询定位各种服务的时候

考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术

在首次请求某个服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象

当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能

以下是这种设计模式的实体

  • 服务(Service) - 实际处理请求的服务。对这种服务的引用可以在 JNDI 服务器中查找到
  • Context / 初始的 Context - JNDI Context 带有对要查找的服务的引用
  • 服务定位器(Service Locator) - 服务定位器是通过 JNDI 查找和缓存服务来获取服务的单点接触
  • 缓存(Cache) - 缓存存储服务的引用,以便复用它们
  • 客户端(Client) - Client 是通过 ServiceLocator 调用服务的对象
阅读全文 »

拦截过滤器模式 ( Intercepting Filter )

拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理

定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上

过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序

拦截过滤器模式涉及以下实体:

  • 过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。
  • 过滤器链(Filter Chain) - 过滤器链带有多个过滤器,并在 Target 上按照定义的顺序执行这些过滤器。
  • Target - Target 对象是请求处理程序。
  • 过滤管理器(Filter Manager) - 过滤管理器管理过滤器和过滤器链。
  • 客户端(Client) - Client 是向 Target 对象发送请求的对象。
阅读全文 »

前端控制器模式(Front Controller Pattern)

前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理

该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序

前端控制器模式涉及以下实体

  • 前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。
  • 调度器(Dispatcher) - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。
  • 视图(View) - 视图是为请求而创建的对象。
阅读全文 »

数据访问对象模式 ( Data Access Object )

数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来

数据访问模式涉及到的参与者有:

  • 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作
  • 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口。该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者是其他的存储机制
  • 模型对象/数值对象(Model Object/Value Object) - 该对象是简单的 POJO,包含了 get/set 方法来存储通过使用 DAO 类检索到的数据
阅读全文 »