我最近遇到过这种类型的代码:
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)”提取到另一个类中。但是似乎开发人员希望此类仅由该方法创建,具体取决于该方法的输入。
这是什么原因?
这是某种类型的图案或反图案还是没有图案?
有更好的解决方案吗?
答案 0 :(得分:1)
这是静态工厂模式。这个想法是通过静态(类级别)方法创建对象的实例并返回它。此模式有几种可能的用法:
答案 1 :(得分:-2)
这看起来像Factory method pattern,但是实现起来不太好。您也可以使用Abstract factory pattern。需要更多的上下文才能获得最佳选择。您还可以检查项目中是否存在类似问题,以及在那里如何解决该问题。