0

我正在尝试使用设计模式,我想知道在以下两种情况下最好的做法是什么:

第一种情况:我想在调用某个执行测试列表的方法后返回并打印一个结果。该列表可以进行排序、过滤等。

结果应该能够给出测试结果、排序方式、使用的过滤器、失败、发生时间等。所有这些都可以/应该是(半)可选的,例如没有过滤器可以用,不然我对任何排序都不感兴趣。也许我只想知道成功的测试,也许不是。

我想到了两种设计模式:工厂方法或复合。恐怕工厂需要很多创作者,而 Composite 可能会做得过火。对其他模式有什么建议,或者为什么一个比另一个更可取?

第二种情况:上面提到的分拣机。可以存在许多不同的分类器(按字母顺序排列,第一次失败等),我不知道如何组织它们。我想在某种 TestSorterCollection 类中声明很多静态排序器,但这很难看。但是,不确定哪种设计模式更好。

4

1 回答 1

1

首先,这在我看来像是 MVC 架构模式的候选者。

  • 型号:测试结果数据
  • 控制器:排序和过滤逻辑
  • 视图:将控制器逻辑应用于一个或多个模型对象的结果

关于设计模式,排序算法(控制器逻辑)可以实现为一组Strategies。然后,将一个或多个测试结果对象传递给策略会返回一个视图,该视图可能是这些测试结果的子集。

该视图可以根据您的需要以多种方式实现。它可以像过滤掉某些测试结果的迭代器一样简单,或者以非默认顺序进行迭代。如果您希望对相同的测试结果有大量视图,它可能是享元。如果您想要具有不同功能的不同类型的视图,它可能是一个装饰器。

如您所见,有很多可能性。关键似乎是将测试结果、逻辑和逻辑结果保持足够分离,以便它们可以独立变化 (MVC)。

于 2013-11-13T05:03:18.980 回答