これは、この Builder 実装で instanceof を取り除く方法に関するフォローアップ スレッドです。
このデザインにはまだいくつかの問題があります。新しいパラメータが導入されるたびに、新しい ConcereteParameter クラスを作成する必要があります。
それは問題ではありません。ただし、 CommandBuilder にもメソッドを追加する必要がありappend(ConcreteParameter)
ます。そして、私はその依存関係があまり好きではありません。
要約する
コマンドはパラメーターで構成できます。すべてのコマンドが同じパラメーターを受け取るわけではありません。したがって、いくつかは無視する必要があります。コマンドに適用される場合 (この実装では、これは
UnsupportedOperationException
特定のクラスに適用できるパラメーターは、それらのクラスでは異なる方法で使用されます (FTPCommand と HTTPCommand のように、IpParameter を別の方法で使用する場合があります)。
将来、新しいコマンドとパラメータが導入される可能性があります
更新
現在の実装works
です。しかし、約 30 個のパラメーターがある場合、パラメーターごとに個別のメソッドが必要になるのはやり過ぎではありませんか?
ある場合、これを達成するためのよりクリーンで柔軟な方法/パターンは何ですか?