2
com.mydomain.project.Handlers
リファクタリング既存のパターン
Xハンドラの実装がある場合は、工場でX変数を作成する必要があり、これは悪いと思います。このプロセスを簡単にするために私が適用できる既存のパターンはありますか?
com.mydomain.project.Handlers
リファクタリング既存のパターン
Xハンドラの実装がある場合は、工場でX変数を作成する必要があり、これは悪いと思います。このプロセスを簡単にするために私が適用できる既存のパターンはありますか?
春がリストとして、特定のタイプのすべてのBeanを注入することができます
public class Factory
{
@Autowired
private List<? extends Handler> handlerList;
public <T extends Handler> T createHandler(Class<T> type) {
for(Handler handler : handlerList) {
if (type.getSimpleName().equals(handler.getClass().getSimpleName()) {
return handler;
}
}
return ...; //some default value
}
}
ファクトリパターンの責任は新しいインスタンスを構築することです。新しいインスタンスを作成せず、初期化するだけです。ファクトリは何も作成しないので、ここでは工場パターンが乱用されます。 **私は工場内でX変数を作成する必要があり、これは悪いと思います**、何も作成しないのでパターン違反です。何をやりたい、初期化する、または作成するのが好きですか? –
@PeterRader .handle()メソッドは新しいオブジェクト(EventHandlerOne)を生成します。全く異なる2つのオブジェクトであるHandlerOneとEventHandlerOneがあります。 – i712345
Aha!ファクトリクラスは何も作成しません。インスタンスを作成するのはハンドルメソッドです。したがって、handle-methodは 'ファクトリメソッドパターン'を完全にします。あなたの工場は実際の工場ではありません。 –