Передача нового значения через несколько слоев в устаревшем коде - PullRequest
0 голосов
/ 30 января 2019

У меня есть монолитное серверное приложение.У меня есть клиентский уровень (для вызова второго сервиса), который лежит после нескольких уровней бизнес-логики, скажем, 3-4 уровня сервисов и других классов.Это в java 6. У меня есть новое требование пересылать строковое значение этому слою из моего уровня контроллера с минимальной модификацией в слои среднего уровня.

Какие могут быть хорошие способы?

  1. Я знаю об одном - ThreadLocal .Безопасен ли ThreadLocal для использования в Java 6, если я его использую.
  2. Существуют ли другие шаблоны проектирования, которые я могу использовать в этом сценарии.

Я, конечно, не могу сейчас изменить контракты для всех средних уровней.

1 Ответ

0 голосов
/ 03 июня 2019

Вы можете попытаться создать Java-бин, инициированный как синглтон.

Предположим, вы хотите перенести переменные "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;
  }

}

В верхнем слое вы вызываете сеттер, в нижнем слое вы можете использовать геттер.

Верхний слой:

TransporterUpperToLowerLayer.getInstance().setFoo(myFoo);

Нижний уровень:

TransporterUpperToLowerLayer.getInstance().getFoo();
...