责任链设计模式混乱

时间:2013-02-22 01:46:22

标签: java design-patterns factory chain-of-responsibility

我理解责任链模式的概念,但也许我错误地使用它。

我有几种类型的产品,并且我有一个控制器来控制为每种类型的产品显示的界面。用户选择产品类型,每个控制器负责显示和与适当的界面交互。

为此,我正在使用责任链模式,这听起来不错。我正在做的是创建一个控制器链,一旦我收到产品类型请求,我就把它传递给控制器​​链,并让相应的控制器实现请求。

但是在思考时,可以使用简单的工厂但使用许多条件语句来实现同样的目标。

您对在这种情况下使用责任链有何看法?

1 个答案:

答案 0 :(得分:2)

至于我,这项任务肯定不是责任链 通常在责任链中,链元素的顺序很重要,而事实并非如此。

我会尽力做到以下几点 创建某种注册表,其中包含带有productType键和控制器值的映射。

示例实施:

class ControllerRegistry
{
  //declaration for map and constructor

  public void Register(string productType, IProductController controller)
  {
    _map.Add(productType, controller);
  }

  public IProductController Find(string productType)
  {
    return _map[productType];
  }
}

在应用程序启动期间,您应该通过调用ControllerRegistry.Register方法注册所有控制器 您可以通过调用ControllerRegistry.Find方法获得适当的控制器 与责任链相比,如果产品类型的数量很大,您将避免性能损失。

修改
相同的任务主题Design pattern for handling multiple message types