我正在研究一个java类来解析HTML并生成RDF(我想我最终会分成两个类 - 一个用于解析,一个用于生成RDF)。
目前我正在创建许多方法来检查HTML数据并将其转换为更统一的表示形式。到目前为止我创建的一些方法是:
public boolean isInteger(String str) { }
public boolean isTime(String str) { }
public boolean isDate(String str) { }
public String dateConverter(String[] date) { } //Converts a Norwegian date into mmddYYYY
我应该将这些方法放入util类吗?目前它们仅被这个特定类使用,但我认为它们可能需要在稍后的时间段使用它们而不是这一类。
答案 0 :(得分:3)
嗯,是的,您列出的方法看起来像是util类中public static
方法的良好候选者。 (例如,最后的2或3很适合称为“DateUtils”的类。)
当然,如果你只在一个地方使用它们,那么它们也可以在那里保留“私人助手”,但只要你有多个地方使用它们,就可以使用util类。
(编辑:过度使用静态方法可能会有问题,但我认为这些方法很可能是静态工具,因为它们是 pure functions 。)
答案 1 :(得分:1)
它们似乎足够通用,适合放入util类。我会,至少。基本上,在代码中解析String的任何类都需要使用这些方法。在将它们添加到类中之前,我会将它们设置为静态,以避免不必要的构造。
分解是一个很好的习惯。如果您不确定是否需要使用它们,请继续操作。它将让您练习使用实用程序类。
答案 2 :(得分:1)
在实用程序类中收集此类方法是一种很好的做法。即使它们目前从单个类调用,这些方法也可能被其他客户端重新使用。
但是,您必须注意使此实用程序类易于重用。要做到这一点,方法签名,实际上是它们的参数,必须尽可能通用。他们不应该接受特定于课程的输入。
我的另一个建议是将此实用程序类划分为多个类,如果它开始包含许多不相干的方法。您可以通过将相关方法分组到单独的类中来完成此操作。例如,您编写的方法可以移动到TypeUtils
类,例如,您可以在Html2RdfUtils
类中收集与转换相关的方法。
最后,如果您认为这些实用程序类可以对您的其他项目有益,则可以在不同的库中收集它们。
答案 3 :(得分:0)
如果你最终想要将它们分成两个类,你可能想要将基类定义为接口或抽象类。
根据您的要求,抽象类应该是正确的选择。 将子类从子类放到抽象类中(可以在抽象类中实现方法)
从另一个答案,我想问一个问题? 答案建议在方法前放置静态以避免不必要的构造,这很有意义。
我知道抽象类不需要实例化来调用它的方法。 它也可以避免施工。
有问题吗? 哪种方式更合法?或更好?或者只是一样。