【问题标题】:Pass variables from Presentation Layer to Logic Layer将变量从表示层传递到逻辑层
【发布时间】:2021-03-15 16:36:25
【问题描述】:

当我尝试让逻辑层更新表示层时,我被卡住了,因为我已经在表示层中初始化了 GUI 变量。尽管如此,在那之后,我还是找不到从逻辑层访问这些变量的方法。我不认为我应该公开所有变量以获取它们。

我这里有一个例子:

  • 更新 multiChoicePanel 的逻辑层方法

    public void clearDisplay() {
              if (currentlyDisplayedQuestion.getQuestionType() == QuestionType.MULTI_CHOICE) {
                  multiChoicePanel.clearDisplay();
              } 
             else
              ...
          };
    
  • 我声明了 multiChoicePanel 的表示层

      private JQEMultiChoiceQuestionScreen multiChoicePanel;
    

那么这里的问题是如何将 multiChoicePanel 传递给逻辑层?

【问题讨论】:

  • 你不应该!只需将必要的信息传递给逻辑层
  • 那么,clearDisplay() 方法应该在表现层而不是逻辑层?
  • 是的。当然!与 UI 相关的一切都属于表现层。
  • 好吧,我们可以说逻辑层负责需要同时使用数据层和表示层的方法吗?
  • 逻辑是你实现业务逻辑和访问数据层的地方。逻辑层通过方法暴露其功能,但不访问 UI 层

标签: java design-patterns n-tier-architecture


【解决方案1】:

我通过在表示层中移动 clearDisplay() 并让逻辑层通过方法暴露其功能来解决了这个问题。

【讨论】:

    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多