序列设计模式中的流程
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...
}
并发症:
系统在增长,我注意到我需要在系统的一些不同地方调用它 'queue of steps'。但是到其他地方有几个步骤变了,有的不能执行,需要执行新的。通常队列会改变,但步骤不会。
问题
是否有一种设计模式允许我单独构建步骤并仅在需要时加入它们 运行?
不确定设计模式,但您可以按以下方式实现:
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();
}
}
场景:
我有一些方法可以处理一种工作流程的某些步骤。每个方法在一个对象中做一些事情,并将同一个对象传递给另一个方法。类似的东西:
void MethodA(SomeType obj)
{
// Some Process
MethodB(obj);
}
void MethodB(SomeType obj)
{
// Some Process
MethodC(obj);
}
void MethodC(SomeType obj)
{
// keep going...
}
并发症:
系统在增长,我注意到我需要在系统的一些不同地方调用它 'queue of steps'。但是到其他地方有几个步骤变了,有的不能执行,需要执行新的。通常队列会改变,但步骤不会。
问题
是否有一种设计模式允许我单独构建步骤并仅在需要时加入它们 运行?
不确定设计模式,但您可以按以下方式实现:
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();
}
}