2

我的用户界面应该位于一个简单的 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,所以在主类中只显示方法调用,如下所示:

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

2 回答 2

0

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

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

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

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

于 2012-06-05T16:16:41.910 回答
0

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

于 2012-06-05T14:17:20.240 回答