私は、そのAPIがゲッターメソッドだけであるインターフェイスを持っているため、インターフェイスを実装するクラスがその点で不変であることが保証されています。
しかし、インターフェイスの動作を変更するものを更新する必要がある場合、具体的なクラスの新しいインスタンスを作成するようにインターフェイスを宣言する方法はありますか?私は明確にするための引数を省略している強制的にインターフェイス宣言でインスタンスを作成する
public interface Generator {
public int[] values();
public float[] indications();
//etc
public MyEnum type;
}
public class ConcreteClass implements Generator {
private ConcreteClass() {
}
public static ConcreteClass createInstance() {
}
}
:
は今、私のようなものを持っています。
createInstance
をインターフェイスに移動するにはどうすればよいですか?
私は 'createInstance()'をインタフェース宣言の一部として良い設計アプローチにするかどうか検討していました。私はメソッドのみを定義し、実際の実装は定義しません。 – Jim
インタフェースに抽象メソッドを追加して新しいインスタンスを作成することは、インターフェイスが制約の実装(必須フィールドなど)を認識していることを前提としており、実装へのインタフェース逆しか真実でなければなりません。 – davidxxx
それからインタフェースが、不変なものを定義していて、正しくないものを定義しているとしたら?私はセッターを追加するかどうかは関係ありませんか? – Jim