【问题标题】:passing a new value through multiple layers in legacy code在遗留代码中通过多层传递新值
【发布时间】:2019-01-30 10:03:46
【问题描述】:

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

有什么好的方法?

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以尝试构造一个作为单例启动的 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2010-11-18
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多