我有一个非常简单的问题。我有一个用户界面,提示用户选择"选项a"或"选项B"(实际选项按钮)。一旦用户选择,我就会调用一个连接到数据库的存储库来获取一些数据。
选项A将需要特定类型的查询,而选项B将生成不同的查询。在不涉及细节的情况下,我实现了一个名为OptionAStrategy和OptionBStrategy的策略模式,该模式将生成正确的查询,以便存储库可以使用该查询。
现在的问题是,我如何传递用户选择"选项A"或"选项B"的事实。我可以传递实际的字符串,比如"选项A或"选项B",并将该字符串传递给StrategyFactory以实例化正确的OptionStartegy。但是这是一个好的做法吗
UI如何传达所选的UI选项,以便策略工厂能够正确地实例化策略的正确实例?假设策略位于存储库级别
提前感谢干杯
凹凸:没有答案-低视图:-(
您可以将策略定义为Action
或ActionListener
的实现,然后将它们附加到特定的UI元素,例如JButton
。用户单击后,将执行该操作
例如,使用JavaSwing:
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
- 如何使用操作
AbstractAction
使用Swing操作的一个好处是,许多UI组件可以从Action
构建,从而允许您提供多种不同风格的UI机制,这些机制都执行相同的功能。
下一步是创建工厂,将这些不同的Action
提供给某种特定于应用程序的控制器,然后将它们注入UI组件。
您需要有上下文和策略接口。在您的上下文中,如果/else选择适当的策略或使用工厂类来启动,您可以选择自己。看这里。