繁体   English   中英

序列设计模式中的流程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM