如何根据各种参数值选择性地过滤

时间:2015-01-26 15:47:49

标签: java design-patterns

我在一家投资银行工作,我们需要处理市场和工具。因此,在我的编程问题中,我将使用这些词语来使问题更加清晰。

我一直在尝试构建一个接口及其 ReferenceData 的实现,其任务是:

  • getAllInstruments()
  • getAllInstrumentsForAMarket(最终字符串市场)
  • getInstrumentsFromAllMarketOfAnISIN(final String isin)
  • getInstrumentFromAMarketAndISIN(最终字符串市场,最终字符串isin)

包括上述内容将有其他参数组合,并将涉及其他参数,如乐器类型(邦德,未来等)。

以上设计将导致在将来考虑新类型的查询参数时进行参数组合,我认为这是一个糟糕的设计。

我按照 Joshua Kerievsky的重构模式所讨论的口译模式进行了跟进,但我遇到了两个问题:

  • 如何处理参数中的空值,比如有人可能正在使用方法 getInstrumentFromAMarketAndISIN(最终字符串市场,最终字符串isin) 并传递空值在市场上。 它应被视为一个有效的查询,然后应该是 getInstrumentsFromAllMarketOfAnISIN(final String isin) 的情况。

  • 我不想让客户端处理if else检查参数然后调用方法,因为这些是实用程序方法,并且将从很多地方调用,这将导致在整个地方进行空检查客户端代码到处 相反, ReferenceData 的实现应该能够处理它。

提前致谢。

0 个答案:

没有答案