java - 使用集合而不是类

标签 java android oop

我有一个 Java Web 服务,在我的网站上我需要显示一些报告。带有标题和数据的表格。这些报告也将显示在 Android 应用程序中。 问题是,对于每份报告,都涉及不同的内容,例如有关汽车的报告和其他有关狗的报告,我需要创建一个模型类才能以正确的方式执行此操作?

例如(这是一个简单的示例),如果我需要显示有关汽车的统计信息,我可能有一个像这样的 java 对象:

public class CarStats {
    private String carName;
    private String carModel;
    private int unitsSold;
}

因此,在我的网站和 Android 应用程序中,我需要实现一个具有特定标题的表格。在我看来,这似乎是正确的方法,因为我认为这种方法遵循 OO。

另一方面,如果我想使其通用,最好使用这样的对象:

public class GenericData {
    private List<String> headers;
    private List<List<String>> data;
}

通过这种方法,我只需要在我的网站和 Android 应用程序中创建一个唯一的表来处理这个对象,无论我显示的数据是什么(更容易)。

但是第二种方法对我来说并不合适。我想知道什么方法更好。

这两种方法各有什么优缺点?

谢谢。

最佳答案

我认为“通用”的两个含义混淆了。一种是Java泛型,例如使用参数化类型<T> 。另一个是普通英语意义上的通用。您可能需要第二个,而不是第一个。从这个意义上说,通用意味着您创建某种适合不同数据的结构,而不是 <T>东西。

例如,您可以创建一个通用的 Stat 或 Data 类(您选择了适当的名称),而不是 CarStat。

public class Report {
    private String header;
    private String data;
    ...
    private String footnote;
    ...
}

Report carReport = Report ("Car", "Data about the car ...", ...); 
// send carReport to be presented.
...
Report dogReport = Report ("Dog", "Data about the dog...", ...); 

现在,在表示层中,您只关心表的结构。然后,您可以呈现网络服务提供的任何内容,而不必担心它是汽车、狗还是其他东西。

关于java - 使用集合而不是类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834049/

相关文章:

android - Listview 和 CustomAdapter 扩展 SimpleCursorAdapter

java - 在 Java 中创建等待线程的 main() 循环的黄金标准是什么

delphi - 抽象与接口(interface) - 在 Delphi 中分离定义和实现

java - Hibernate:如何将子类链接到其父类(super class)?

android - 从首选项设置当前选项卡

java - 包含不同对象类的一个数组

android - 当 GPS 被禁用时,用户应该再次打开 GPS。我怎样才能做到这一点?

c# - 单一职责原则用法如何正确调用子方法?

java - 在 Scala 中创建 Java 对象

java - 如何在读取文件并创建 .bmp 图像时继续下一行?