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