gpt4 book ai didi

java - 3 Swing 应用程序设计 : which is the best?

转载 作者:太空狗 更新时间:2023-10-29 22:54:37 25 4
gpt4 key购买 nike

<分区>

我是桌面应用程序开发的新手,今年夏天我要交付一个相当大的项目。问题是代码必须非常清晰,所以我在更新它时不会遇到(很多)麻烦。

因此,我想要一个好的“关注点分离”。对我来说最困难的部分是 View - Controller 分离。

现在,我已经阅读了很多教程、讨论等。我已经用 3 种不同的方式设计了一个迷你应用程序。该应用程序很简单:单击将标签转换为“Hello world”的按钮。

您如何看待这 3 种设计?

是否有更好的设计来满足我的期望?

设计1

View1.java :

public View1() {
initComponents();
this.controller = new Controller1(this);
}

private Controller1 controller;

public void updateLabel(String message){
this.jLabel1.setText(message);
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.controller.doSomething();
}

private void initComponents() {
...
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
...}

Controller 1.java :

public class Controller1 {
public Controller1(View1 v){
this.view = v;
}

public void doSomething(){
this.view.updateLabel("Hello world");
}

private View1 view;
}

设计2

View2.java :

public View2() {
initComponents();
this.controller = new Controller2(this);

jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
controller.doSomething();
}
});
}
public void updateLabel(String message){
this.jLabel1.setText(message);
}
private Controller2 controller;
...

Controller2.java :

public class Controller2 {

public Controller2(View2 v){
this.view = v;
}

public void doSomething(){
this.view.updateLabel("Hello world");
}

private View2 view;
}

设计三

View3.java :

public View3() {
initComponents();
this.controller = new Controller3(this);
this.jButton1.addActionListener(this.controller.listener);
}
private Controller3 controller;
public void updateLabel(String message){
this.jLabel1.setText(message);
}
...}

Controller3.java :

public class Controller3 {

public Controller3(View3 v){
this.view = v;
this.listener = new MyListener(v);
}

private View3 view;
public MyListener listener;
}

我的监听器.java :

public class MyListener implements ActionListener{
private View3 view;

public MyListener(View3 v){
this.view = v;
}

public void actionPerformed(java.awt.event.ActionEvent evt) {
this.view.updateLabel("Hello world");
}
}

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