gpt4 book ai didi

java - 责任链设计模式困惑

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:30 25 4
gpt4 key购买 nike

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

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

为此,我使用了责任链模式,我认为这听起来不太好。我正在做的是创建一个 Controller 链,一旦我收到产品类型请求,我就将它传递给 Controller ​​链并让适当的 Controller 执行该请求。

但仔细想想,使用一个简单的工厂但使用许多条件语句也可以实现同样的效果。

您如何看待在这种情况下使用责任链?

最佳答案

对于我来说,这个任务肯定不是责任链。
通常在责任链中,链元素的顺序很重要,而在这里情况并非如此。

我会尝试做以下事情。
创建某种注册表,其中包含一个包含 productType 键和 controller 值的映射。

示例实现:

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 方法注册所有 Controller 。
您可以通过调用 ControllerRegistry.Find 方法获得合适的 Controller 。
与责任链相比,如果产品类型的数量很大,您将避免性能下降。

编辑
同一任务主题 Design pattern for handling multiple message types

关于java - 责任链设计模式困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com