私は特定の API を備えた特注のフレームワークに取り組んでおり、現在はそのリファクタリングに取り組んでいます。
私が解決しなければならない問題の 1 つは、クエリの深さやその他の属性に基づいてクエリを別のクラスにリダイレクトするルートのようなアプローチを作成することです。以下は方法です:
class Blah {
public Object query1(){...}
public Object query2(){...}
}
そして、私はそれを次のようなものに変更する必要があります
class Blah implements BeforeFilter{
@Override
protected void filter()
{
//decide to call which query method
//then redirect the request to query
}
public Object query1(){...}
public Object query2(){...}
}
上記のアイデアを実行する非常に伝統的な方法は、各 query() メソッド内に if/else を追加して、先に進むかどうかを決定することです。
正直なところ、私はこのアプローチが好きではありません。そのため、よりエレガントなものを探しています。
PS : そうする理由は、パブリック API を変更するためではありません。プロキシ デザイン パターンを実装しましたが、そのパターンでは一部の API が変更されます。