我理解责任链模式的概念,但也许我使用它是错误的。
我有几种类型的产品,并且我有一个控制器来控制为每种产品显示的接口。用户选择产品类型,每个控制器负责显示相应的接口并与之交互。
为此,我使用的是责任链模式,我认为这听起来不太好。我正在做的是创建一个控制器链,一旦得到产品类型请求,我就把它传递给控制器链,让适当的控制器实现请求。
但是当思考的时候,使用一个简单的工厂,但是有很多条件语句,也可以实现同样的目标。
你认为在这种情况下责任链的使用如何?
发布于 2013-02-22 21:12:41
就我而言,这项任务并非责任链。
通常,在责任链中,链元素的顺序很重要,而在这里则不是这样。
我试着做以下几件事。
创建某种注册表,其中包含一个包含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方法可以获得适当的控制器。
与责任链相比,如果产品类型数量大,您将避免对性能的影响。
编辑
https://stackoverflow.com/questions/15015522
复制相似问题