我有一个非常简单的问题。我有一个用户界面,提示用户选择“选项A”或“选项B”(实际选项按钮)。一旦用户选择,我就会调用连接到数据库的存储库来获取一些数据。
选项A需要某种类型的查询,而选项B会生成不同的查询。在没有详细说明的情况下,我实现了一个名为OptionAStrategy和OptionBStrategy的策略模式,它将生成正确的查询,以便存储库可以使用该查询。
现在问题是我如何传递用户选择“选项A”或B的事实。我可以传递实际字符串“Option A”或“Option B”并将该字符串传递给StrategyFactory以实例化正确OptionStartegy。但这是一个很好的做法吗
先谢谢 干杯
凹凸:没有答案 - 低视图: - (
答案 0 :(得分:1)
您可以将策略定义为Action
或ActionListener
的实现,然后将其附加到特定的UI元素,例如JButton
。用户点击后,将执行该操作
例如,使用Java Swing:
final Action optionA = new AbstractAction("Option A") {
public void actionPerformed(ActionEvent e){
// option A code
}
};
final JButton optionAButton = new JButton(optionA);
// add button to UI
使用Swing操作的一个好处是,许多UI组件都可以从Action
构造,允许您提供多种不同风格的UI机制,这些机制都执行相同的功能。
下一步是创建工厂,将这些不同的Action
提供给某种特定于应用程序的控制器,然后将它们注入到UI组件中。
答案 1 :(得分:0)
您需要具有上下文和策略界面。在您的上下文中,您可以选择是否选择适当的策略或使用工厂类来帮助您获得成功。见Here。