如何使用多个参数对变体函数进行稳定的环绕?
How can I make a stable wrapping around variant function with several parameters?
A class 有许多具有相似结构的方法。
public void notifyProcessingAboutReplay(String transactionId, int matchId, boolean replay){
// PART 1
//------------
// much preparation and checking with possible returns,
// that all results in a correct item instance.
//-----------
// PART 2
// here can be one or many calls, connected to that item
// and maybe to parameters after the second one
item.setReplay(replay);
item.rewind();
}
每个方法都有两个或多个参数。方法的第一部分检查前两个参数,并可能为进一步的工作创建一个项目。也许它只是 returns。第一部分在所有方法中都是相同的。
第二部分的方法差别很大。他们在第二个(如果有的话)之后使用该项目和参数。
我想在一个基本方法和许多部分方法中将这两个部分分开,它们将被传递到基本方法中,可能作为 Runnable
。但我不能将变体 Runnable
称为 item.variantRunnable()
,更不用说 item.variantRunnable(arg1, arg2...)
了。很明显,我对注入和Runnables
的了解太少了
您可以创建一个参数 class:
class Parameter {
Item item;
boolean replay;
//other params
}
并将其用作部分方法的单个入口点:
void baseMethod(Consumer<Parameter> partialMethod, Parameter param) {
//common stuff
param.setItem(item);
//set other relevant things
partialMethod.accept(param);
}
//example use:
baseMethod(this::partialMethod1, new Parameter(replay=true, ...));
void partialMethod1(Parameter param) {
//do what you gotta do
param.getItem().setReplay(param.getReplay));
param.getItem().rewind();
}
A class 有许多具有相似结构的方法。
public void notifyProcessingAboutReplay(String transactionId, int matchId, boolean replay){
// PART 1
//------------
// much preparation and checking with possible returns,
// that all results in a correct item instance.
//-----------
// PART 2
// here can be one or many calls, connected to that item
// and maybe to parameters after the second one
item.setReplay(replay);
item.rewind();
}
每个方法都有两个或多个参数。方法的第一部分检查前两个参数,并可能为进一步的工作创建一个项目。也许它只是 returns。第一部分在所有方法中都是相同的。
第二部分的方法差别很大。他们在第二个(如果有的话)之后使用该项目和参数。
我想在一个基本方法和许多部分方法中将这两个部分分开,它们将被传递到基本方法中,可能作为 Runnable
。但我不能将变体 Runnable
称为 item.variantRunnable()
,更不用说 item.variantRunnable(arg1, arg2...)
了。很明显,我对注入和Runnables
的了解太少了
您可以创建一个参数 class:
class Parameter {
Item item;
boolean replay;
//other params
}
并将其用作部分方法的单个入口点:
void baseMethod(Consumer<Parameter> partialMethod, Parameter param) {
//common stuff
param.setItem(item);
//set other relevant things
partialMethod.accept(param);
}
//example use:
baseMethod(this::partialMethod1, new Parameter(replay=true, ...));
void partialMethod1(Parameter param) {
//do what you gotta do
param.getItem().setReplay(param.getReplay));
param.getItem().rewind();
}