我的用户界面代码应该放在哪里?

时间:2012-06-05 13:51:29

标签: java user-interface

我的用户界面应该放在一个简单的CRUD应用程序中(使用Java) 在我的应用程序中,我有主类以及另一个处理所有与数据库有关的事情的类,例如从中获取信息或向其添加新信息。

将UI元素保留在主类中并保持数据库类转发用户输入是明智的,例如在数据库类中添加一个新元素,如下所示:

public static void main(String[] args) {
   Scanner scan = new Scanner(system.in);

   System.out.println("Give me your name:");
   String name = scan.nextLine();

   DatabaseHandler db = new DatabaseHandler();
   db.addNameToDatabase(name);  
}

或者输入提示符应该存在于DatabaseHandler中,所以在main-class中只显示方法调用,如下所示:

public static void main(String[] args) {
  DatabaseHandler db = new DatabaseHandler(); 
  db.addNameToDatabase(); //user interface now inside addNameToDatabase method  
}

2 个答案:

答案 0 :(得分:0)

这实际上取决于程序的大小。如果您的程序很小并且易于在一个文件中读取,那就让它成为现实。随着程序变得越来越大,有必要清楚地将其分解出来。 (如果它真的比直接的程序编码方式小,可能是一个类中最好的。)
如果您将其分解出来,那么主类应该是UI和数据部分的驱动程序,它们应该位于不同的模块中。你可能想看看MVC或MVP等不同模式如何拆分它们 正如你所看到的,没有一种方法适合所有人。分解为组件/模块/软件包的大型程序由于布线而难以绕开,但是让团队更容易工作。

答案 1 :(得分:0)

始终在开发过程中,请记住 - high cohesionlow coupling。对于您的特定问题,请以这种方式思考 - 无论采用哪种方法,您都拥有high cohesion?不。为什么database类应该处理用户输入?为什么main方法应该处理用户输入?不,你的方式都是理想的错误。

但我们很少遇到理想的情况。你的IO应该由另一个类处理,你的数据库应该由另一个类处理,你的UI也应该处理。在这些类中,每个方法都应该有一个特定的任务。例如,在IO类中使用getter和setter来获取和设置变量。每种方法都应该做它应该做的事情,以确保高凝聚力。通过这种方式,您最终也可以确保低耦合,因为您的模块不会相互依赖。你可能会想 - 哦,我可以在一个课程中写下所有这些并将其完成,但请记住,这种方法有很多优点。在必须由其他人完成代码维护的情况下,他们会通过类和方法的名称知道在哪里查找问题。在您需要在多年后查看自己的代码的情况下,如果您没有以这种方式组织,您甚至不会识别一个单词。

记住 - 高内聚和低耦合FTW!

理想情况下 - 你的主要应该只是你的程序的起点,而不是别的。