我的代码片段如下:
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);
}
函数
sendMail
、 createProject
、 createRequest
的输出取决于 requestType
,因此这些函数最终会具有多个 if-else
条件。为此类建模以避免这种情况的正确方法是什么?
最佳答案
一种方法是创建一个具有抽象方法 AbstractRequest
、 sendMail
等的抽象类 createProject
,然后有几个具体的子类 RequestType1
RequestType2
等,每个子类都有不同的 sendMail
等实现。我猜他们称之为策略模式。
关于Java 类设计 - if 条件太多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13220798/