【发布时间】:2019-01-17 15:44:46
【问题描述】:
我最近遇到了这种类型的代码:
final class OnlyMe {
private int a;
private int b;
//setter and getters for a and b.
private OnlyMe(){}
public static OnlyMe getOnlyMeObj(int c) {
// use c value to connect to database
// to populate a and b
if(rs.next()) {
OnlyMe onlyMe = new OnlyMe();
onlyMe.a = rs.getInt(1);
onlyMe.b = rs.getInt(2);
return onlyMe;
}
// return null for everything else.
// assume the code is under try-catch block.
return null;
}
因此,似乎可以将“getOnlyMeObj(int)”提取到另一个类中。但似乎开发人员希望这个类仅由该方法创建,具体取决于该方法的输入。
这是什么原因?
这是某种类型的模式或反模式还是没有模式?
有没有更好的解决方案?
【问题讨论】:
-
它被称为静态工厂方法
-
这是一个静态工厂方法。私有构造函数迫使您依赖该方法,以便您获得已经设置了所有值的实例(来自数据库)。
-
感谢您的链接。我还阅读了this link 的答案。但是对于这种情况有更好的解决方案吗?
标签: java design-patterns