私はJavaで戦略パターンを作成しています。戦略パターン:コンストラクタを使ってクラスを列挙型にするにはどうすればいいですか?
これが私の戦略インターフェイスActivationStrategy.javaです:
public interface Strategy {
public void strategyAlgo(JTextField textField);
}
私はインターフェイスを実装する別のクラスを持っています。これらのクラスには、値を渡す必要があるため、コンストラクタがあります。たとえば:
FirstStrategy.java
public class FirstStrategy implements Strategy{
private JComboBox<String> _comboBox;
public FirstStrategy(JComboBox<String> comboBox) {
_comboBox = comboBox;
}
public void strategyAlgo(JTextField textField) {
textField.addKeyListener(new myKeyHandler(_comboBox, textField));
}
SecondStrategy.java
今、私は列挙型としてのクラスをしたいと思います。 ような何か:
public enum strategies {
FIRSTSTRATEGIE(){
@Override
public void strategyAlgo() {
...
}
},
SECONDSTRATEGY(){
@Override
public void strategyAlgo() {
...
}
public JButton addButton(JPanel panel) {
...
}
public void addActionHandlerToButton(JButton okButton) {
...
}
};
public abstract void strategyAlgo();
}
しかし、どのようなコンストラクタは?
クラスにフィールドが必要ですか?あなたはパネル/コンボボックスをstrategyAlgoメソッドに直接渡すことはできませんか? – assylias
しかし、すべての戦略がパネルまたはコンボボックスを必要とするわけではありません。 – LCP
私はあなたがそれらの列挙型にしたい場合、あなたの現在の戦略オブジェクトは既にシングルトンだと仮定します。そうですか? – Zircon