私はインターフェイスインターフェイス分離原則 - Javaの
interface XXXCommandHandler(){
void parse(String something);
String response();
String additionalResponse();
}
- を持ってXXXCommandHandlerを実装するクラスのいくつかは)(additionalResponseを実装していません。私はいくつかのadditionalResponseを実装していないので、私がnullを返すように強制しています
- 、その後の解析呼び出しXXXCommandHandler
- を実装するクラスを取得するためにApplicationContextManager.getInstance()。getBeansOfType(XXXCommandHandler.class)を使用して応答し、additionalResponse い
- 。 私は、次の
- の代わりに、additionalResponseを実装declaire additionalResponseデフォルトの方法として、およびnullを返し/またはそれがオプションなどを返却し、それを上書きすることはありませんクラスにnullを返すと考えることができます
- 醜い方法: - XXXCommandHandlerParserすなわち
インタフェースXXXCommandHandlerParserを拡張additionalResponse方法で)additionalResponse
を解析し、レスポンス方式とXXXCommandHandlerAddtionalresponse(2つの異なるインタフェースをXXXCommandHandlerParser()を作成し実装していないすべてのクラスでnullを返します(){
void parse(String something); String response(); }
インターフェースXXXCommandHandlerAddtionalresponse() がXXXCommandHandlerParser {
01を拡張String additionalResponse(); }
しかし、私は#3をすれば、私は ApplicationContextManager.getInstance()。getBeansOfType(XXXCommandHandlerAddtionalresponse.class)を変更する必要がありました。
- #4の場合、additionalResponseを実装していないクラスまたはXXXCommandHandlerAddtionalresponseを実装していないクラスは取得されません。
additionalResponseメソッドを実装しているクラスについて説明します。
どのようなエレガントな方法について考えることができますか?
@Mena - 私はあなたのインタフェースがデフォルトの方法では1番のオプションだと思います。 –
"インタフェースがあります。XXXCommandHandler(){...' "...これは有効なJavaではありません。 –
ハリー、読みやすくするためにコードを適切にフォーマットする必要があります –