Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的例子中,我有哪些选项可以防止Java中的重复代码_Java_Duplicates - Fatal编程技术网

在我的例子中,我有哪些选项可以防止Java中的重复代码

在我的例子中,我有哪些选项可以防止Java中的重复代码,java,duplicates,Java,Duplicates,我有大约6门课,它们做的“几乎”相同,但价值观不同。我将在下面给出两个课程和一个例子,然后描述我在做什么 public class AttributeRangeRule implements Template { @Override public String writeTemplate(BusinessRule businessRule) throws Exception { String link = TemplateReader.getInstan

我有大约6门课,它们做的“几乎”相同,但价值观不同。我将在下面给出两个课程和一个例子,然后描述我在做什么

    public class AttributeRangeRule implements Template {
    @Override
    public String writeTemplate(BusinessRule businessRule) throws Exception {

        String link = TemplateReader.getInstance().getLinkToQuery(businessRule.getBusinessRuleTypeCode());
        String template = TemplateReader.getInstance().readQuery(link);
        ST templateFixer = new ST(template);
        templateFixer.add("code", businessRule.getBusinessRuleTypeCode());
        templateFixer.add("attribute_table", businessRule.getListOfTables().get(0).getName());
        templateFixer.add("operator", businessRule.getOperator().getName());
        templateFixer.add("range_min", businessRule.getListOfValues().get(0).getValue());
        templateFixer.add("range_max", businessRule.getListOfValues().get(1).getValue());
        templateFixer.add("attribute_column", businessRule.getListOfColumns().get(0).getName());
        templateFixer.add("error", businessRule.getErrorMessage());
        templateFixer.add("GreaterOrEqual", ">=");
        templateFixer.add("LessOrEqual", "<=");
        templateFixer.add("LessThen", "<");
        templateFixer.add("GreaterThen", ">");
        String templateDLL = templateFixer.render();
        return templateDLL;

    }
}


public class AttributeCompareRule implements Template {
    @Override
    public String writeTemplate(BusinessRule businessRule) throws Exception {

        String link = TemplateReader.getInstance().getLinkToQuery(businessRule.getBusinessRuleTypeCode());
        String template = TemplateReader.getInstance().readQuery(link);
        ST templateFixer = new ST(template);
        templateFixer.add("code", businessRule.getBusinessRuleTypeCode());
        templateFixer.add("attribute_table", businessRule.getListOfTables().get(0).getName());
        templateFixer.add("operand", businessRule.getOperator().getName());
        templateFixer.add("compare_with", businessRule.getListOfValues().get(0).getValue());
        templateFixer.add("error", businessRule.getErrorMessage());
        String templateDLL = templateFixer.render();
        return templateDLL;

    }
}
公共类AttributeRange实现模板{
@凌驾
公共字符串writeTemplate(BusinessRule BusinessRule)引发异常{
String link=TemplateReader.getInstance().getLinkToQuery(businessRule.getBusinessRuleTypeCode());
字符串模板=TemplateReader.getInstance().readQuery(链接);
ST templateFixer=新ST(模板);
add(“code”,businessRule.getBusinessRuleTypeCode());
添加(“属性表”,businessRule.getListOfTables().get(0.getName());
添加(“运算符”,businessRule.getOperator().getName());
add(“range_min”,businessRule.getListOfValues().get(0.getValue());
add(“range_max”,businessRule.getListOfValues().get(1.getValue());
add(“属性_列”,businessRule.getListOfColumns().get(0.getName());
add(“error”,businessRule.getErrorMessage());
添加(“GreaterOrEqual”,“>=”);

templateFixer.add(“LessOrEqual”,”您应该尝试利用这里的OOPS概念,并在这里使用
继承

您可以创建一个名为
AttributeRule
的基类,该基类重写
writeTemplate()
方法,并将所有冗余代码放在其中,并通过子类扩展该类,即
attributeComparule
attributeComparule

这里是概念性的想法和一些片段

public class AttributeRule implements Template {

    @Override
    public String writeTemplate(BusinessRule businessRule) throws Exception {
        String link = TemplateReader.getInstance().getLinkToQuery(businessRule.getBusinessRuleTypeCode());
        String template = TemplateReader.getInstance().readQuery(link);
        ST templateFixer = new ST(template);
        templateFixer.add("code", businessRule.getBusinessRuleTypeCode());
        templateFixer.add("attribute_table", businessRule.getListOfTables().get(0).getName());
    }
}

public class AttributeCompareRule extends AttributeRule {

    @Override
    public String writeTemplate(BusinessRule businessRule) throws Exception {
        super.writeTemplate(rule);
        // Custom class code here
        templateFixer.add("operand", businessRule.getOperator().getName());
        templateFixer.add("compare_with", businessRule.getListOfValues().get(0).getValue());
        templateFixer.add("error", businessRule.getErrorMessage());
        String templateDLL = templateFixer.render();
        return templateDLL;
    }
}

public class AttributeRangeRule extends AttributeRule {
     super.writeTemplate(rule);
    // Custom class code here
}

这个问题可能会问得更好,但请记住在发布前检查。谢谢亲爱的,我需要等待40分钟才能在那里发布。我不知道这个平台。谢谢。希望这里的人也能找到解决方案。非常感谢Pankaj。这肯定会帮到我。我刚刚注意到,在自定义类代码部分,我不能继续执行templateFixer.add(等),templateFixer不是激子类,但应该在那里,因为它在基类属性中声明。您可以从基类方法返回
ST
的实例作为返回类型,并在子类中处理它。如果您不能理解它,请告诉我是否需要帮助。再次感谢您,我完全按照您所说的做了,它工作正常It’现在好了。