java - 避免java中许多if else语句的最佳方法

标签 java refactoring

我有一个实现如下的方法

public void setAttributes(Data d) {
  Model m;
  String type = d.getType();
  if (type.equals("TYPE1")) {
    m.setType(type);
    m.setDuration(d.getDuration())
    m.setBenefit(d.getBenefit())
    m.setPermission(d.getPermission());
  } else if (type.equals("TYPE2")) { /* Here we wont be having duration, benefit */
    m.setType(type);
    m.setLab(true)
  }
}

这看起来不可扩展,因为将来如果出现更多类型,那么我们需要继续添加 if else block 。有什么办法可以重构这个吗? 注意:根据类型属性会有所不同。

最佳答案

您可以为每种类型创建一个Data 子类,并使用重写将行为单独附加到每个类。如果您计划拥有非常多的数据类型和大量关联的逻辑,这是有意义的。

public abstract class Data {
    ...
    public abstract void setAttributes(Model m);
}

关于java - 避免java中许多if else语句的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486188/

相关文章:

java - "Class"类对象上的锁定实现以进行同步

refactoring - 返回列表的修改版本的方法

java - JDOM Transformer - 不要收缩空元素

java - SOLR 6.2 忽略堆设置(SOLR_JAVA_MEM 参数)

.net - 有没有办法以编程方式提取接口(interface)?

javascript - 需要摆脱许多如果

refactoring - 在 Visual Studio 2019 中保存时重构

delphi - 避免 "variable might not have been initialized"

java - 由自定义 ArrayAdapter 中按钮的事件创建的 DialogFragment 始终具有相同的位置

java - ImageMagick 和 Java Runtime Exec 的问题