上下文设计模式

前言

在开发中,如果一个方法有3个以上的参数,我们应该将它们包装到一个参数中,原因:

  1. 方便调用,参数过多类型容易混淆。

  2. 参数个数变更容易替换,无需批量更改方法。

  3. 方便设计模式实施及日志记录等。

一个参数的好处很多,于是我们可以思考,一个请求流程中,我们是否可以只用一个参数呢?

我觉得可以,而且是一种很高效的设计模式。

上下文设计模式

我将应用如下请求参数的模式统称为上下文设计模式

public class Context<T, R> {

    /**
     * request
     */
    private T request;

    /**
     * response
     */
    private R response;

    /**
     * 执行成功标志
     */
    private boolean success;

    /**
     * 失败原因
     */
    private Throwable exception;

    /**
     * 上下文额外附加对象
     */
    private Map<String, String> extParams;

}

上下文设计模式具有如下特点:

  1. 所有的请求及返回都在一个对象中,对象包含了请求过程中用到的所有信息,不同应用层以此对象贯穿整个处理生命周期。
  2. 返回值一般都是void,通过异常中断执行或在上下文对象中设置success字段。
  3. 通过对象类型或泛型选择执行方法。

设计技巧

  1. 范型,方便复用。
  2. Map应对复杂场景的折中方案。
  3. 单例模式。

总结

用一个上下文对象包含生命周期的做法,可以将流程处理标准化。减少处理复杂度。


版权声明:本文为u013179884原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。