1

私は、物理的なインストールを制御する何かに取り組んでいます。各セルを黒または白にすることができるグリッドのインストールが存在します。Atm私はこの方法を持っています:

void programRunner(int message) {
        if (message == STARTSHOWTIME) {
          println("showtime");
        }
        if (message == ENDSHOWTIME) {
          println("parse new state");
          boolean[][] nextState = randomState();
          gridCommunicator.nextState(nextState);
          checkMatrix.set(nextState);
        }
      }

true が白で false が黒の多次元配列を渡します。何かを所定の位置に設定してインストールの準備ができたとき、および次に進むときに呼び出されます。

ただし、ランダムな白黒のモード、文字を描くモード、画像を表示するモードなど、複数のモードが必要です。

各モードをオブジェクトとして持ちたいのですが、正確に何を探しているのかわかりません。たとえば、次のとおりです。

class Program {

  String programName;

  Program(String programName) {
    this.programName = programName;
  }

  // . . . . . . . . . . . . . . . . . . .

  void programRunner(int message) {
    if (message == STARTSHOWTIME) {
      println("showtime");
    }
    if (message == ENDSHOWTIME) {
      println("parse new state");
      boolean[][] nextState = randomState();
      gridCommunicator.nextState(nextState);
      checkMatrix.set(nextState);
    }
  }

  // . . . . . . . . . . . . . . . . . . .


}

メソッド programRunner は今でも同じです。別のメソッドを使用するには、新しいクラスを作成する必要があります。しかし、新しいクラスは必要ありません。オブジェクトを作成して、メソッド programRunner がどのように見えるかをオブジェクトに渡すことができるようにしたいと考えています。そのようなことはJavaで可能ですか?

4

1 に答える 1

4

いくつかの変更部分があるメソッドの動作をカスタマイズする必要がある場合は、

  1. パーツと同じ数のメソッドを持つインターフェイスを作成します。
  2. さまざまなケースごとに、特定のケース固有のロジックを持つインターフェイスを実装する匿名クラス インスタンスをメソッドに渡します。

ソリューションのスケッチは次のとおりです。

インターフェース:

interface Strategy {
  void m1(); void m2();
}

あなたの方法:

void actionMethod(Strategy s) {
  s.m1(); s.m2();
}

メソッドの呼び出し:

actionMethod(new Strategy() { 
   public void m1() { ...stuff 1...}
   public void m2() { ...stuff 2...}
});
于 2012-10-09T10:14:58.907 に答える