通过旧代码中的多层传递新值

时间:2019-01-30 10:03:47

标签: design-patterns java-6 thread-local legacy-code

我有一个整体后端应用程序。我有一个客户端层(称为第二个服务),该客户端层位于几层业务逻辑之后,比如说3-4层服务和其他类。它在Java 6中。我有一个新要求,即从控制器层将字符串值转发到该层,而对中间层的修改最少。

有什么可能的好方法?

  1. 我知道一个- ThreadLocal 。如果我使用ThreadLocal,是否可以在Java 6中安全使用。
  2. 在这种情况下还有其他设计模式可以使用吗?

我现在当然不能更改所有中间层的合同。

1 个答案:

答案 0 :(得分:0)

您可以尝试构造一个以单例形式启动的Java bean。

假设您要将变量“ foo”和“ bar”从上层传输到下层:

public class TransporterUpperToLowerLayer{

  public static TransporterUpperToLowerLayer getInstance(){
    if(instance == null)
      instance = new TransporterUpperToLowerLayer();
    return instance;
  }

  public void setFoo(Object foo){
    this.foo = foo;
  }

  public void setBar(Object bar){
    this.bar = bar;
  }

  public Object getFoo(){
    return foo;
  }

  public Object getBar(){
    return bar;
  }

}

在上层称为“ setter”,在下层可以使用“ getter”。

上层:

TransporterUpperToLowerLayer.getInstance().setFoo(myFoo);

下层:

TransporterUpperToLowerLayer.getInstance().getFoo();