说我有以下类(class):
public class FormContainer {
@EJB
private ExternalDao externalDao; // uses dependency Injection
private final OrderForm orderForm;
private final List<OrderFormContent> formContents;
public FormContainer(OrderForm orderForm) {
this.orderForm = orderForm
initializeOrderForm();
}
private void initializeOrderForm() {
formContents = externalDao.getFormContents(orderForm);
// similar for any other properties
}
// getters & setters
}
我正在使用此类来容纳我需要通过应用程序引用的所有字段。我仍在学习良好的设计和不良的设计实践,因此我想知道这种不良设计是否会初始化orderForm的属性。
如果是这样,如何改进?
最佳答案
没关系。
要记住的重要规则是不允许this
进行“转义”,这意味着不要由于匿名/内部类而将实例直接或隐式传递给另一个“进程”(用最广泛的术语定义)。
原因是您的实例在其他进程获得时可能未完全初始化,这可能导致不一致和奇怪的错误。
关于java - 在构造函数内调用私有(private)方法是否是一个好的设计?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38862970/