我的用例使用哪种设计模式?

jos*_*osh 5 java design-patterns

我有一个用例,其中输入是一组参数(比如A,B,C,D)和数据(比如XYZ).基于参数(A,B,C,D),我必须处理数据(XYZ)并回复.处理逻辑可以是基于参数的唯一或共同的(例如,当A执行时,执行#1操作,执行A和C时执行#2操作,执行B,C和D时执行#2操作等).我可能还需要维护处理顺序.

当前实现基于if-else循环.我正在寻找责任链,管道设计模式.但是上述任务还有其他合适的设计模式吗?

使用if-else块的示例:

I/P:A = {A1,A2,A3},B = {B1,B2,B3},C = {C1,C2,C3},D = {D1,D2,D3}和XYZ ="foo"

if (A == A1)
{
    //dosomething-A1

    if (B == B1)
    {
        //dosomething-B1

        if (C == C2)
        {
            //dosomething-C2
        }
    }
    else if (B == B2)
    {
        //dosomething-B2
    }

    if (C == C2)
    {
        //dosomething-C2

        if (D == D1)
        {
            //dosomething-D1
        }
        else if (D == D3)
        {
            //dosomething-D3
        }
    }
}
else if (A == A2)
{
    //dosomething-A2
    ...
}
else if (A == A3)
{
    //dosomething-A3
    ...
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*nai 4

如果重复使用的话,链条似乎非常适合这个。另一种选择是使用存储在映射中的处理程序,其中键是适当的参数值。这对于作为参数传递的有限可能值集非常有效。你会得到类似的东西:

handlers.get( a ).handle(XYZ)
Run Code Online (Sandbox Code Playgroud)

所以,你完全可以少做一些假设。但同样,这并不适合所有目的。