策略模式 - 从UI输入

时间:2011-06-08 17:13:40

标签: design-patterns user-interface

我有一个非常简单的问题。我有一个用户界面,提示用户选择“选项A”或“选项B”(实际选项按钮)。一旦用户选择,我就会调用连接到数据库的存储库来获取一些数据。

选项A需要某种类型的查询,而选项B会生成不同的查询。在没有详细说明的情况下,我实现了一个名为OptionAStrategy和OptionBStrategy的策略模式,它将生成正确的查询,以便存储库可以使用该查询。

现在问题是我如何传递用户选择“选项A”或B的事实。我可以传递实际字符串“Option A”或“Option B”并将该字符串传递给StrategyFactory以实例化正确OptionStartegy。但这是一个很好的做法吗

UI如何传达选定的UI选项,以便策略工厂可以正确地实例化正确的策略实例?假设策略位于存储库级别

先谢谢 干杯

凹凸:没有答案 - 低视图: - (

2 个答案:

答案 0 :(得分:1)

您可以将策略定义为ActionActionListener的实现,然后将其附加到特定的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