我有一个类似这样的类(class)
class FileProcessorContext {
private static BufferedWriter fileWriter;
static {
createFile();
}
public static void writeToFile(...) {}
public static synchronized void closeFile(...) {}
}
我可以将FileProcessorContext
创建为单例并使用它,而不是这个伪(它保留一些状态)实用程序类吗?
最佳答案
您可以使用具有单个枚举值的枚举,因为每个枚举值都是开箱即用的单例。
枚举可以实现一个可测试的接口(interface),以便能够在需要时切换到另一个实现:
public enum FileBufferedProcessorService implements FileProcessorService {
SINGLETON;
private BufferedWriter fileWriter;
FileBufferedProcessorService(){
createFile();
}
....
public synchronized void writeToFile(...) {}
public synchronized void closeFile(...) {}
}
和界面:
public interface FileProcessorService {
void writeToFile(...);
void closeFile(...);
}
关于java - 单例或具有静态字段的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564309/