推荐的设计/模式,如果我有多个条件要处理

时间:2013-04-22 18:15:07

标签: design-patterns ooad

我有一些条件,比如 -

List globalList = new ArrayList();
if(X.isExists)
  globalList(new XBasedClass());
if(Y.isExists && Z.isExists)
  globalList(new ZYBasedClass());
else if(Y.isExists || Z.isExists)
  globalList(new CommonBasedClass());
if(N.isExists)
....

首先我想到了使用状态模式,但我意识到然后对于每个条件我需要声明类,并且我想限制数字类。

其次我想到了使用装饰器模式,但是再次需要上面的条件检查,如果需要,那么上面的循环会产生任何问题。

我的条件只需要在列表中添加新类,没有别的,甚至将来如果条件数量增加,即使工作仍然相同,即更新列表。

所以我使用静态方法创建了一个私有类,它只是验证条件并相应地更新列表。

是否有更好的推荐设计来实现它

2 个答案:

答案 0 :(得分:1)

可以将创建委托给工厂类。如果您有不同的实现类型集,那么是一个抽象工厂。所以有模式。

我不确定那些if块是否只是一个例子,但它们可以被优化,例如将if(Y.isExists)移动到上面的块。

答案 1 :(得分:0)

我写这篇文章是为了解答几条评论。

  1. 我对@ Tech-user的答案进行了投票,因为在您的案例中,工厂模式是正确的。
  2. 实施工厂概念的复杂程度各不相同。 “抽象工厂”超出了我的预期。
  3. Learn more about the different categories of patterns。这将帮助你了解适当的。 Factory是创建模式。您正在创建新对象。 State和Decorator本质上不是创造性的。
  4. 其他人的评论主张不使用模式因为它会使事情复杂化而忽略了使用模式的观点。模式使代码更好,使用面向对象的优点构建代码。但是,将代码强制转换为不合适的模式肯定会使事情复杂化。
  5. 因为“它们增加了复杂性”而无法解除模式,实际上是非常误导的。