我是Java新手 我想为自己的目的编写util类,例如FileUtil,DBUtil,...
但是有些人将util类中的所有方法都写为静态方法
class FileUtil{
public static File openFile(String path){
...
}
public static File readFile(String path){
...
}
...
}
以及将util类写为单例类,将方法写成public的
class FileUtil{
private FileUtil(){}
public FileUtil getInstance(){
...
}
public File openFile(String path){
...
}
public File readFile(String path){
...
}
...
}
我想知道在进行内存分配时哪种方法更好 预先感谢
答案 0 :(得分:1)
从不写单例。如果您真的想要静态字段(不要),请编写static
。对于(单一实现)实用程序方法,没有必要在客户端上强制使用额外的对象。
看看Runtime
与System
造成的混乱,尽管本质上是相同的。
传统上,实用程序类是使用静态方法编写的类。可以添加引发异常的私有构造函数,以防止添加默认构造函数,但会给代码增加额外的混乱(尽管减少了文档编制)。另外,添加不必要的final
也很常见。
单元素枚举在单例中很流行(不要写单例)。使用相同的参数实用程序类应该是无元素的枚举,尽管没有明显的原因它并不流行。单元素枚举和无元素枚举都向类添加了废话方法。
如果您真的想要简洁的代码,请使用接口。您避免每次都必须写public
,而常量可以忽略public static
。这显然不是很流行,因为客户端可能会通过实现接口来破坏自己的代码。请参见Swing。
答案 1 :(得分:0)
实用程序类是不需要任何实例的类。他们提供了方法,可帮助您执行操作。
单个实例是需要具有一个且只有一个实例的实例。单身人士的原因多种多样,也许您需要一个不应受到干扰的单一协调员...
名字已经指出了,该类提供了方法以简化文件访问...
此对象负责跟踪文件系统的完整性。除了FileManger,其他任何人都不能创建/删除文件,因此FileManager将是 singleton 。 (您的问题并没有要求使用文件管理器,但我想对FileUtils有所帮助)
为什么回答这个问题:您认为您可以针对内存进行优化,但是干净的代码指出you should not optimize
如果您真的不必使用Singleton,请不要使用它。使用普通的实用程序类(这是您要执行的操作)。