【问题标题】:Recycling methods that need certain objects in JavaJava中需要某些对象的回收方法
【发布时间】:2019-05-02 22:43:59
【问题描述】:

我只是想知道是否有任何方法可以回收在同级类中重复的 Java 方法,因为它们需要特定的对象。

我们来看一个例子:

public void refreshSearch(){
    try{
        String search = bookDialog.getTxtBrowser().getText();
        bookBusiness.searchByString(search, bookDialog
            .selectedItemToString(bookDialog.getCmbBrowser())); 
        bookDialog.getTbBooks()
            .setModel(new BookTableView(bookBusiness));
        setBookTableTitles();
    }
    catch(SQLException ex){System.out.print(ex);}
}

然后:

public void refreshSearch(){
    try{
        String search = studentDialog.getTxtBrowser().getText();
        studentBusiness.searchByString(search, studentDialog
                .selectedItemToString(studentDialog.getCmbBrowser())); 
        studentDialog.getTbStudents()
                .setModel(new StudentTableView(studentBusiness));
        setStudentTableTitles();
    }
    catch(SQLException ex){System.out.println(ex);}
}

这里的重点是我有两个相等的方法,只是因为它们需要一个特定的对象类型。

我想到的解决方案是接收一个通用的 Object 参数,然后检查类并创建相应的实例,但是如果这个方法被三个不同的类使用,我必须创建六个对象,并且只有两个其中将被使用(其他四个将为空)。因此,我必须为每个对象创建一个长结构。

Java 中有什么方法可以解决这个问题吗?

非常感谢!

【问题讨论】:

  • 也许您可以使用模板模式,例如getDialog().getTxtBrowser().getText(),其中 getDialog 是一个抽象方法,在子类中被重写以返回正确类型的对象。
  • 这当然可以完成,但额外的代码需要维护的工作量远远超过将这四个自定义行复制到每个类中。有时,尤其是短代码,重复是更好的选择。

标签: java methods recycle


【解决方案1】:

这可以使用接口来解决。因此您可以创建一个具有 getTxtBrowser() 和 getTbStudents() 方法的 Dialog 接口,以及一个具有 searchByString 方法的 Business 接口,然后为 StudentDialog 和 BookDialog 以及 StudentBusiness 和 BookBusiness 的该接口创建实现类。这样你就可以创建一个使用接口的方法,它会在你的实现类中执行这些方法。

【讨论】:

  • 哦,谢谢,多么快速的回答!我刚刚忘记了接口。非常感谢。你帮了我很多。
猜你喜欢
  • 1970-01-01
  • 2017-04-30
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多