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)
如果重复使用的话,链条似乎非常适合这个。另一种选择是使用存储在映射中的处理程序,其中键是适当的参数值。这对于作为参数传递的有限可能值集非常有效。你会得到类似的东西:
handlers.get( a ).handle(XYZ)
Run Code Online (Sandbox Code Playgroud)
所以,你完全可以少做一些假设。但同样,这并不适合所有目的。