gpt4 book ai didi

java - 什么是帮助 Builder 模式构建 MVC UI 的有用抽象/契约?

转载 作者:行者123 更新时间:2023-12-04 06:33:59 25 4
gpt4 key购买 nike

我的骰子模拟器会根据用户的输入和模型改变其 UI。我一直在尝试实现 Builder 模式来处理变化和可选参数,同时允许使用 GroupLayout。

目前我正在 Controller 中进行这样的调用:

if ((model.simRolls <> null) && (inputEvent.getSource == outputBtn) && (model.testType.equals("Success"))) {
SimView outputScreen = new SimView.Builder(jframe, jpanel).testLabel("SUCCESS TEST OUTPUT", GroupAlignment.LEADING).outputLabel(model.simRolls, GroupAlignment.CENTER).actionButton("Next", GroupAlignment.TRAILING).build();
}

我讨厌 if 语句,因为它们种类繁多。谁能帮我理解我可以使用什么抽象或契约(Contract)或接口(interface)来干净准确地在 MVC 中构建所需的 UI?

最佳答案

而不是试图在你的 if-statement 中处理无限组合,为什么不把子句分解成几个更细化的子句呢?这样,如果您添加更多新功能,那么您可以轻松地将另一个小子句添加到现有子句中,而不必担心忘记处理另一个组合。

例如:-

SimViewBuilder  builder = new SimViewBuilder(jframe, jpanel);

if (model.simRolls != null) {
builder = builder.actionButton("Next", GroupAlignment.TRAILING);
}

if (inputEvent.getSource == outputBtn) {
builder = builder.outputLabel(model.simRolls, GroupAlignment.CENTER);
}

if (model.testType.equals("Success")) {
builder = builder.testLabel("SUCCESS TEST OUTPUT", GroupAlignment.LEADING);
}

... // add more if statements for other features and configure the builder accordingly

// finally, build it
SimView outputScreen = builder.build();

关于java - 什么是帮助 Builder 模式构建 MVC UI 的有用抽象/契约?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com