gpt4 book ai didi

java - 这是使用验证功能扩展所有 Java Swing GUI 的正确方法吗

转载 作者:行者123 更新时间:2023-12-04 06:20:27 24 4
gpt4 key购买 nike

当我很久以前在写一个 GUI Swing 应用程序时,我已经创建了 18 个类。每个都扩展了一个 swing 类(JTextField、JList、JTable、JTextArea 等),并且每个都实现了一个类似的数据访问和验证接口(interface)。

我在代码行上遇到问题,因为维护时间太长;部分原因是因为许多代码要么是重复的,要么是很多愚蠢的条件,比如验证类上的“if”文本框或“else if”JList。

我想知道是否有任何面向对象的方法来帮助在抽象类中构建验证代码,那会很好。我所有的 18 个类都已经扩展了它自己的 swing 类,这意味着我无法在同一个文件中扩展另一个抽象类。

最终,我希望保持简单,总代码行短,易于理解并尝试不使用第三方框架(因为这可能会在 future 引起问题)。

最佳答案

我们没有太多的上下文可以继续下去,老实说,听起来您可能有一些总体设计问题,但是您可以使用一些技术来清理像这样的“并行类”。一种是保持一个到另一个的映射隔离到一个区域,并根据字段的类型创建具体的 validator 类。

另一种选择是访问者模式。你可以有一个 ValidationVisitable您的每个子类实现的接口(interface):

public interface ValidationVisitable {
public void acceptVisitor(ValidationVisitor visitor);
}


//... in your concrete subclass:
public void acceptVisitor(ValidationVisitor visitor) {
visitor.visit(this);
}

然后,您的访问者类将对每种具体类型的组件进行重载:
public class ValidationVisitor {
public void visit(MyTextField field) {
//validate MyTextField
}

public void visit(MyCheckBox cb) {
//validate MyCheckBox
}
}

关于java - 这是使用验证功能扩展所有 Java Swing GUI 的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645108/

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