假设我们有一些Bean(这是POJO)
public class Bean {
}
我们有BeanWrapper,它是Bean的包装器,代表Bean类的DTO。还支持适用于Bean的适配器。
public class BeanWrapper {
public Bean toBean() {}
public static BeanWrapper fromBean(Bean bean) {}
}
问题在于方法fromBean
。
该方法的正确设计模式应该是什么 - 它应该是静态方法吗?
换句话说,更好的是:
BeanWrapper wrapper = BeanWrapper.fromBean(bean);
或者只是非静态方法,并使用如下:
BeanWrapper wrapper = new BeanWrapper().populateBean(bean);
从评论中编辑: 或者使用构造函数:
BeanWrapper wrapper = new BeanWrapper(Bean bean);
哪一种比其他更好更优先?为什么会那样?
答案 0 :(得分:1)
这取决于 - 所以基于意见。如果您正在使用CDI(内容依赖注入),最好先使用第一个选项注入包装器,并避免使方法保持静态。这是一个CDI环境,因为它更接近OO范例。
我的意见是只在绝对必要时才使用公共静态方法。例如工厂方法。
对于其他选项,所有选项都取决于您对团队的决定。尽管如此。
为什么我认为静态方法是邪恶的(在大多数情况下):
由于Java是OO语言,因此在该上下文中使用它是一种好习惯。考虑到恕我直言,在这些情况下使用公共静态方法是唯一的好处: