【发布时间】:2015-01-07 20:39:28
【问题描述】:
我在一个有一些实体的项目中工作,为了设置实体属性,我们有很多这样的代码:
public void recordLogFile(int fileSize, int fileHeight, Long idFile) {
try {
LogFileEntity logEntity = new LogFileEntity();
logEntity.setFileSize(fileSize);
logEntity.setFileHeight(fileHeight);
logEntity.setFile(FileEntity.find(idFile));
logEntity.setStatus(LogStatus.SUCESS);
logEntity.setType(LogType.NORMAL);
logEntity.persist();
} catch (Exception e) {
some log code
}
}
有很多类需要持久化日志文件实体,但在某些情况下,我们在属性上有不同的值。例如 LogStatus.FAIL LogType.OLD,我们有一段重复的代码只是改变了值。
最好的方法是什么??
谢谢!!!
【问题讨论】:
-
我建议使用工厂方法模式。您可以传入状态和类型的参数,并让该方法为您返回一个 LogFileEntity 对象。
-
@Joe 我认为工厂模式非常有用.. 谢谢
-
1.提取到方法 2。使用默认值编写构建器
-
考虑
recordLogFile()的内聚性。它的类的名称是什么?这种方法似乎不遵守单一职责原则,这可能是您重复代码的真正原因。查看存在重复的变体也会很有用。
标签: java design-patterns