序列设计模式中的流程

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();
    }
}