私は、クライアントが実装するための一連のインターフェースを提供するフレームワーク(Javaで、しかし質問は一般的です)をコーディングしています。フレームワークの関数は、実装クラスがどのように構築されるかに依存します。つまり、インターフェイスの他のインスタンスを提供するためにそれらの実装に依存します。
たとえば、私は持っているかもしれません:
Interface IContribution {
public IMyStuff getMyStuff();
public IHelper getHelper();
}
Interface IMyStuff {
public void doSomeMethod(IHelper helper);
}
IMyStuffとIHelperのこれらのインスタンスが使用可能であることを確認するにはどうすればよいですか?
1つの方法は、インターフェースで「getter」メソッドを作成し、私のフレームワークで、返されたnullオブジェクトを入念にチェックすることです。
もう1つのオプションは、実装するインターフェイスメソッドを(戦略パターンを使用して)呼び出すファクトリを実装する抽象クラスを作成することです。しかし、これは私がそもそもインターフェースを持っているという事実に反しています。その後、クライアントは抽象クラスを使用する必要があります。しかし、抽象クラスの代わりにインターフェースを使用することで、これを回避することができます。したがって、インターフェイスを提供するのではなく、抽象クラスのみを提供する必要があります...
それで、これについてのあなたの考えは何ですか、これへの実用的なアプローチは何ですか?