我有一些数据正在以一种方法查询。它已经到了成为箭头反模式的地步。它看起来像这样:
void queryData()
{
int masterIndex = getMasterIndex();
if (masterIndex != -1)
{
byte[] pageData = getMasterPage(masterIndex);
if (pageData) != null)
{
Item1 i1 = getItem1(pageData);
Item2 i2 = getItem2(pageData);
if (i1 != null && i2 != null)
{
showResults(i1, i2);
}
}
}
}
想象上面但更大。更多的 if 语句和每个被调用的方法都有相当多的逻辑。
现在我能做的是重构上面的方法,这样所有的 if 语句都是肯定的,如果为真,则提前返回。
我觉得将每个查询和有效性检查分解到他们自己的类中会更干净。每个动作都将继承/实现如下接口:
public interface Action
{
public void run();
public boolean wasSuccessful();
}
我会创建一个所需操作的列表,并一次完成一个。通过这种方式,很明显可以看出每个操作属于什么逻辑。
这是过度架构吗?以上是我还不知道的现有模式吗?
提前致谢。