gpt4 book ai didi

java - 参数化策略模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:33 24 4
gpt4 key购买 nike

我有几个实现策略模式的 Java 类。每个类都有不同类型的可变数量参数:

interface Strategy {
public data execute(data);
}

class StrategyA implements Strategy {
public data execute(data);
}

class StrategyB implements Strategy {
public StrategyB(int paramA, int paramB);
public data execute(data);
}

class StrategyC implements Strategy {
public StrategyC(int paramA, String paramB, double paramC);
public data execute(data);
}

现在我希望用户可以在某种 UI 中输入参数。 UI 应该在运行时选择,即策略应该独立于它。参数对话框不应该是单一的,并且应该有可能使其行为和外观对于每个策略和 UI(例如控制台或 Swing)都不同。

你会如何解决这个问题?

最佳答案

一种可能性是使用类似于 Builder 设计模式的东西:

对于每种策略类型,您都应该有一个相应的构建器(一个或多个)。构建器不能像普通构建器一样工作,接收所有初始化参数作为方法参数;相反,它应该阻止直到收到相关输入。一些构建器会显示一个 Swing 对话框并等待,其他的会打印到控制台并等待输入,其他的可以从文件中读取等等。构建器接收到所有输入后,它可以创建策略实例并返回它。

这样您就可以将数据检索逻辑与策略本身分离。另一个好处是您可以拥有所有构建器的通用接口(interface),因此一旦您选择了一个特定的构建器,您就可以使用同一段代码来操作它。

关于java - 参数化策略模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662043/

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