2009-04-22 4 views
0

バネ検証を使用してモデルを検証し、データベースに詰め込んでいます。例えばので コード臭いですか?バリデーターとモデルは同じ種類のハイレッシーを共有します

注文 - > OrderItemの

それはOrderValidator

によって検証OrderValidator注文でのOrderItem検証するためのOrderItemValidatorするためのデリゲートを検証しているデータベースに順序を保存する前に。したがって、この場合、階層またはバリデータが

OderValidatorのように見えます - 順序がORDERITEMSを持っていること> OrderItemValidator

知識は、バリデータとモデルの両方に存在しています。

これが暗黙的な複製の兆候(Parallel inheritance hierarchyコードの匂いに似ています)の兆候であるかどうか疑問に思っています。 はいの場合、私はそれを避ける方法は何ですか?

答えて

1

私は、検証プロセスをクラスに依存しない関数と、実際のクラスが基本的に検証するために検証関数で使用できるクラスごとのパラメータに分けます。そのアプローチの実行可能性には、提供されているよりも問題空間の知識が必要です。

0

私の経験では、バリデーターはいくつかの種類のデコレータを使用して実装するのが最適です。検証者は互いに合理的なis-a関係を持っていないので、から何かを継承するべきではありません。

バリデータは、モデルの動作ではなく、モデルに付随するデータを調べるだけなので、階層構造はまったく適切ではないと思います。

関連する問題