我有下面的情况:有一个工厂,返回功能接口的实例:如何在工厂更好地初始化对象?
public class RatingTableRowModifierFactory
{
@Autowired
private PlanSpecificBenefitsRatingTableRowModifier planSpecificBenefitsRatingTableRowModifier;
@Autowired
private CompositeBenefitsRatingTableRowModifier compositeBenefitsRatingTableRowModifier;
@Autowired
private RafRatingTableRowModifier rafTableRowModifier;
public Function<RowBean, RowBean> getRowModifierInstance(.... input)
{
switch (ratingType)
{
case AGE:
return planSpecificBenefitsRatingTableRowModifier;
case COMPOSITE_AGE:
return planSpecificBenefitsRatingTableRowModifier
.andThen(compositeBenefitsRatingTableRowModifier)
.andThen(rafTableRowModifier);
default:
return new EmptyRatingTableRowModifier();
}
}
}
在我的方法的主要问题是,RowModifier的每一个具体的实例必须接受以正确执行一些额外的参数应用方法。例如,我需要通过算法ID参数为planSpecificBenefitsRatingTableRowModifier和报价ID到rafTableRowModifier。我无法将这些参数添加到RowBean对象中,并且我可以添加它们的唯一位置是getRowModifierInstance方法。请让我知道,如果没关系?至于我,它看起来不好,因为如果修改器的数量会增长,那么方法参数的数量也可能会增加,这是从我的意见不好...请帮我理解如何避免这种情况?
由于提前,
你可以给修饰语一个查询他们是否适用于特定的RatingType?然后你可以遍历循环中的可用修饰符并根据修饰符进行组合,这适用于当前的RatingType。 – daniu
主要的问题是,在调用'planSpecificBenefitsRatingTableRowModifier'之前,我需要做一些'初始化',例如一些quote id,我不知道放在哪里会更好。 – asdasdsdf
我的意思是'功能 result = new EmptyMod(); for(RatingType ratingType:RatingType.values()){for(Modifier mod:modifierList){if mod.isApplicableTo(ratingType){result = result.andThen(mod); }}};返回结果;' –
daniu