[英]Processes in Sequence design pattern
场景:
我有一些方法可以处理某种工作流程中的某些步骤。 每个方法在对象中执行某些操作,然后将同一对象传递给另一个方法。 像这样:
void MethodA(SomeType obj)
{
// Some Process
MethodB(obj);
}
void MethodB(SomeType obj)
{
// Some Process
MethodC(obj);
}
void MethodC(SomeType obj)
{
// keep going...
}
并发症:
该系统正在不断发展,我注意到我需要在系统的某些不同位置调用此“步骤队列”。 但是在其他地方,有些步骤会更改,有些步骤无法执行,而新的步骤需要执行。 通常,队列会更改,但步骤不会更改。
题
是否有一种设计模式可以让我将步骤分开并仅在需要运行时才加入?
不确定设计模式,但可以通过以下方式实现:
void Method(SomeType obj)
{
MethodA(obj);
MethodB(obj);
MethodC(obj);
}
void MethodA(SomeType obj)
{
}
void MethodB(SomeType obj)
{
}
void MethodC(SomeType obj)
{
}
这样,您可以随时随地重新排列这些方法。
您可以使用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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.