说我有以下类(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/

10-11 14:35