私は Java で目標のスタックを持つ Linear Planner を実装しています。そのため、述語、演算子、状態などのさまざまなオブジェクトを格納する必要があるStackを使用しています。これを実現するために、Stackable というインターフェイスを作成したので、Stack<Stackable>
. すべてのスタック可能オブジェクトに共通するものは何もないため、このインターフェイスは空です。ただし、すべてをスタックする必要があります。
public Interface Stackable {
}
public class Predicate implements Stackable {
private String name;
private List<Parameter> params;
...
}
public class Operator implements Stackable {
private String name;
private List<Parameter> params;
private List<Predicate> preconditions;
private List<Predicate> adds;
private List<Predicate> deletes;
...
}
public class State implements Stackable {
private List<Predicate> preds;
...
}
空のインターフェイスのアイデアが気に入らなかったので、読み始めて、Marker インターフェイスという用語に出くわしました。これは私の Stackable の場合だと思います。また、一般的に注釈に置き換えることができることもわかりましたが、使用したことがなく、問題を解決できるかどうかもわかりません。
それが私が知りたい理由です:
- 私の設計に代わるより良い方法はありますか (注釈を使用するか、別の方法で)?
- 場合によってはマーカー インターフェイスがまだ解決策である場合、いつ使用する必要があるかをどのように区別できますか?