2016-07-06 59 views
0

我正在实现工厂模式在我的应用程序的方式和工作很好,除了下面的代码块(我有另一个,更大的另一个类)。有没有什么方法可以重构这个“丛林”结构?提前致谢!如何重构其他 - 如果选择正确的构造函数

private Goal createLocalTaskInstance(HashMap<String, Object> goalDetails){ 
    Goal goal = null; 

    if (goalDetails.get("description") == null && 
      goalDetails.get("endDate") == null){ 
     goal = new Task(String.valueOf(goalDetails.get("title"))); 

    } else if (goalDetails.get("description") != null && 
      goalDetails.get("endDate") == null) { 
     goal = new Task(String.valueOf(goalDetails.get("title")), 
       String.valueOf(goalDetails.get("description"))); 

    } else if (goalDetails.get("description") == null && 
      goalDetails.get("endDate") != null) { 
     goal = new Task(String.valueOf(goalDetails.get("title")), 
         (Date) goalDetails.get("endDate")); 

    } else if (goalDetails.get("description") != null && 
      goalDetails.get("endDate") != null){ 
     goal = new Task(String.valueOf(goalDetails.get("title")), 
       String.valueOf(goalDetails.get("description")), 
       (Date) goalDetails.get("endDate")); 
    } 
    return goal; 
} 

回答

3

我建议你干脆不管他们中的一些是空调用默认的构造函数(与所有三个参数),然后简单地做在构造一个空检查。然后,它会是这个样子:

goal = new Task(String.valueOf(goalDetails.get("title"), 
       goalDetails.get("description"), 
       goalDetails.get("endDate")); 

,任务等级:

public class Task { 
    private String title; 
    private String description; 
    private Date endDate; 

    public Task(String title, String description, Date endDate) { 
     this.title = title; 
     if(description != null) { 
      this.description = description; 
     } 
     if(endDate != null) { 
      this.endDate = endDate; 
     } 
    } 
} 
+0

摆好!非常感谢你! –

相关问题