我的代码片段如下:

public void execute(Parameters params) {
    Long requestType = params.getRequestType();
    // Based on the requestType the name of the project would be different
    getName(requestType);
    // Same as above
    getDescription(requestType)
    // Project here is a collection of different requests
    Long projectId = createProject(name, description)
    RequestContents requestContents = params.getRequestContents();
    for(RequestContent requestcontent : requestcontents) {
        Long requestId = createRequest(name, description, projectId);
        updateRequest(requestId, requestContent1);
    }
    // Based on the  requestType, mail content would differ
    String mailContent = getMailContent(requestType, projectId)
    sendMail(mailContent);
}

函数 sendMailcreateProjectcreateRequest 的输出取决于 requestType ,因此这些函数最终会具有多个 if-else 条件。
为此类建模以避免这种情况的正确方法是什么?

最佳答案

一种方法是创建一个具有抽象方法 AbstractRequestsendMail 等的抽象类 createProject ,然后有几个具体的子类 RequestType1 RequestType2 等,每个子类都有不同的 sendMail 等实现。我猜他们称之为策略模式。

关于Java 类设计 - if 条件太多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13220798/

10-14 20:23