情境:
我有一些方法可以处理某种工作流程的某些步骤。每个方法在对象中执行某些操作,并将同一对象传递给另一个方法。这样的事情:
void MethodA(SomeType obj)
{
// Some Process
MethodB(obj);
}
void MethodB(SomeType obj)
{
// Some Process
MethodC(obj);
}
void MethodC(SomeType obj)
{
// keep going...
}
并发症:
系统正在增长,我注意到我需要在系统的某些不同位置调用这个“步骤队列”。但是对于其他地方,一些步骤会发生变化,有些步骤无法执行,需要执行新步骤。通常,队列会更改,但步骤不会更改。
问题
是否有一个设计模式,允许我建立分开的步骤,并在我需要运行时加入它们?
答案 0 :(得分:2)
不确定设计模式,但您可以按照以下方式实现:
void Method(SomeType obj)
{
MethodA(obj);
MethodB(obj);
MethodC(obj);
}
void MethodA(SomeType obj)
{
}
void MethodB(SomeType obj)
{
}
void MethodC(SomeType obj)
{
}
通过这种方式,您可以随时随地重新安排这些方法。
答案 1 :(得分:2)
您可以使用 Builder 模式:
public class MyObject {
public static class MyObjectBuilder {
private MyObject obj;
public MyObjectBuilder() {
obj = new MyObject();
}
public MyObjectBuilder methodA() {
// edit something with obj
return this;
}
public MyObjectBuilder methodB() {
// edit something with obj
return this;
}
public MyObjectBuilder methodC() {
// edit something with obj
return this;
}
public MyObject build() {
return obj;
}
}
public static void main(String[] args) {
MyObject a = new MyObjectBuilder()
.methodA()
.methodB()
.methodC().build();
MyObject b = new MyObjectBuilder()
.methodA()
.methodA()
.methodB()
.methodB().build();
MyObject c = new MyObjectBuilder()
.methodC()
.methodB()
.methodA()
.methodC()
.methodB().build();
}
}