特定のモデルを同じタイプの既存のモデルと比較できるようにする必要がある Yii アプリを構築しています。比較に基づいて、インポートされたデータは既存のモデルを更新するか、新しいモデルを作成します。または何もしません。Yii フレームワーク フォーラムには、方程式の半分を提供するビヘイビアの実装に関する素晴らしい投稿があります。Compare
各モデルに固有の「スコアリング」メソッドを配置する適切な場所について混乱しています。たとえば、すべての既存のモデルとcompare($each)
特定のモデルを反復処理する場合がありますが、それは属性間の違いしか出てきません。name
あるモデルでは を気にしているのに対し、別のモデルでは と を気にbirthday
しているかもしれませんcolor
。
モデルの各タイプに固有のものにするために動作をオーバーライドする必要がありますか、それとも最初から動作を持つという目的を無効にしますか (その後、これらすべての動作サブクラスはモデル クラスに関連付けられます)。
私が持っていた他のアイデアは次のとおりです。
- 「スコアリング可能」なモデルが準拠する可能性のある との
IScorable
インターフェースを作成しますgetScore()
- モデル固有のシナリオに関連付けられた多くの具体的な戦略を使用して、戦略パターンを実装する